Blogger でレイアウトテンプレートをカスタマイズしているときに表示される、恐怖のエラーメッセージ。
に、エラーメッセージについての素晴らしい記事があったので、早速翻訳してみました。
エラーメッセージ自体は、Blogger ダッシュボード表示言語を「日本語」にした場合のものに差し替えてあります。テンプレート作成で注意すべき点がいくつか紹介されているので、これから Blogger のレイアウトテンプレートをいじってみようと思っている人は、目を通しておくといいかもしれません。エラーが出てパニックになったときにも、読み返してもらえるとうれしいです。
ということで、翻訳開始…。
Blogger のレイアウトテンプレートは XML を基にした XHTML でコード化されています。XHTML は HTML より厳しい言語なので、レイアウトテンプレートを操作すると以前(クリボウ注:クラシックテンプレート)よりエラーに出会う可能性が高くなっています。
旧 Blogger テンプレートの使用
最も一般的な失敗は、旧 Blogger の HTML テンプレートをテキストボックスに貼り付けるという行為です。「テンプレートを保存」や「プレビュー」ボタンを押すと表示されるエラーメッセージがこちらです。
テンプレートの形式が適切でないため、解析できませんでした。 すべての XML 要素が適切に閉じられているかどうかを確認してください。
XML エラー メッセージ: The content of elements must consist of well-formed character data or markup.
このエラーメッセージは、HTML テンプレートの「形式が適切でない」ために表示されます。クラシックテンプレートを選択していない限り、旧 Blogger 用 HTML テンプレートとは互換性がありません。
タグの閉じ忘れ
XHTML では、全てのタグに対応する終了タグ必要です。終了タグが欠けていると、次のようなエラーメッセージが出ます。
テンプレートの形式が適切でないため、解析できませんでした。 すべての XML 要素が適切に閉じられているかどうかを確認してください。
XML エラー メッセージ: The element type "div" must be terminated by the matching end-tag "".
<div>
タグに対応する終了タグは
</div>
です。全てのタグは、スラッシュのついた終了タグで閉じられなければなりません。空要素のタグは、スペースとスラッシュを入れてタグを閉じます(例:
<br />
)。空要素とは開始タグと終了タグの間に何も含まない要素のことです(例:
<img src="valid.gif" />
)。
& の使用
属性値でアンパサンド(半角の&)を使用する場合は、そのまま
&
という文字を使用するのではなく、
&
を使用するべきです。
&
という文字をそのまま使用した場合には、次のようなエラーメッセージが表示されます。
テンプレートの形式が適切でないため、解析できませんでした。 すべての XML 要素が適切に閉じられているかどうかを確認してください。
XML エラー メッセージ: The reference to entity "key" must end with the ';' delimiter.
(または)
テンプレートの形式が適切でないため、解析できませんでした。 すべての XML 要素が適切に閉じられているかどうかを確認してください。
XML エラー メッセージ: The entity name must immediately follow the '&' in the entity reference.
間違った例:
<title>Boys & Girls</title>
→ 正しい例:
<title>Boys & Girls</title>
スクリプトやスタイルの使用
XHTML では、スクリプト要素とスタイル要素は CDATA を持つとされています。そのため
<
や
&
は、XML プロセッサによってそれら
<
や
&
という文字そのものの実体として認識されます。スクリプト要素やスタイル要素の中身は、CDATA セクションで囲むことで、実体の表示を避けることが出来ます。
例:
<script language="JavaScript" type="text/javascript">
<![CDATA[
document.write("<b>Hello World!</b>");
]]>
</script>
属性値の不足
全ての属性には値がなければいけません。属性値は全て
'
でくくって下さい。そうしないと、次のようなメッセージが表示されます。(クリボウ注:ウィジェットやセクションのタグでエラーが出ます。)
セクションの中に必須の ID 属性がないものがあります。 セクションにはそれぞれ固有の ID が必要です。
不適切なネスト(入れ子)
要素は、最後に開始したタグから閉じていく必要があります。間違った例:
<em><strong>なんとかかんとか</em></strong>
→ 正しい例:
<em><strong>なんとかかんとか</strong></em>
大小文字の混在したタグ名
XHTML では、大文字小文字は区別されます。もし
<HTML>
という開始タグを使っていれば、
</html>
ではなく
</HTML>
で閉じる必要があります。そうしないと、次のようなエラーメッセージが表示されます。
テンプレートの形式が適切でないため、解析できませんでした。 すべての XML 要素が適切に閉じられているかどうかを確認してください。
XML エラー メッセージ: The element type "HTML" must be terminated by the matching end-tag "".
変数の未定義
Blogger のレイアウトテンプレートでは、テンプレートのフォントや色の設定を簡単に変更できるように、変数が使われています。これらの変数は、「Variable definitions(変数定義)」部分で定義されており、CSS コード内で使用されます。
変数の定義例:
<variable name="bgColor" description="Page Background Color" type="color" default="#efefef" value="#ffff66">
body 要素についての CSS では次のように変数が使われます。例:
body {
background: $bgColor;
}
たとえば、CSS で変数($rightSbColor)を使用しながら、Variable definitions(変数定義)部でそれを定義していなかった場合には、次のようなエラーメッセージが表示されます。
ページ スキンで無効な変数が宣言されています: 定義されていない変数が使用されています。入力: rightSbColor。
ウィジェット ID の重複
もし、テンプレートにすでに存在しているウィジェットと同じ ID を持ったウィジェット(ページ要素)を追加しようとすると、次のようなエラーメッセージが表示されます。(クリボウ注:セクションも同様です。)
ID: LinkList1 のウィジットが複数見つかりました。 ウィジット ID は固有である必要があります。
Includable 外のコード
Includable 要素以外にコードを書くと、次のようなエラーメッセージが表示されます。
ID "Blog1" のウィジットに要素 "b:if" を含めることはできません。 ウィジットには、b:includable 要素のみ含めることができます。
これを避けるには、
b:includable id='main'
要素内にコードを記述してください。
セクション外のウィジェット
ウィジェットはつねにセクション内に書く必要があります。セクション外にウィジェットを書くと、次のようなエラーメッセージが表示されます。
ID HTML1 のウィジットは、セクション内にありません (実際の親要素は div です)。ウィジットはセクション内に存在する必要があります。
これを避けるには、
b:section class='sidebar' id='sidebar'
のようなセクション要素内に、ウィジェットを記述してください。
データタグの表記
テンプレートの形式が適切でないため、解析できませんでした。 すべての XML 要素が適切に閉じられているかどうかを確認してください。
XML エラー メッセージ: The value of attribute "href" associated with an element type "a" must not contain the '<' character.
このエラーメッセージは、次のようなコードを書いたときに起こります。
<a href="<data:post.url/>">Read more!</a>
正しい例:
<a expr:href='data:post.url'>Read more!</a>
同様に、
<span class="<data:post.author/>">
<data:post.body/>
</span>
というコードも、エラーが出ます。正しい例はこちらです:
<span expr:class='data:post.author'>
<data:post.body/>
</span>
(クリボウ注:データタグは、タグに囲まれて使用される場合と、タグ自体の属性値として使用される場合とで表記の仕方が変わる、ということ。)
クォートなしの属性値
属性の値はクォートで囲む必要があります。そうしないと、次のようなエラーメッセージが表示されます。
テンプレートの形式が適切でないため、解析できませんでした。 すべての XML 要素が適切に閉じられているかどうかを確認してください。
XML エラー メッセージ: Open quote is expected for attribute "width" associated with an element type "img".
たとえば img 要素の width 属性は
width=56
ではなく
width='56'
と書く必要があります。クォートはシングルクォート(
'
)でもダブルクォート(")でもかまいません。
複数のスキン
スタイルシートを記述するための b:skin 要素を、テンプレート中に2つ以上含むと、このようなエラーメッセージが出ます。
テンプレートにはスキンが 1 つだけ存在する必要があります。スキン 2 が見つかりました。
以上、翻訳終了。…長かったですね。
途中から読み出した人(そんな人いるかな?)に改めて説明しておくと…、この記事は上記リンクの記事を日本語訳して紹介したものです。この記事が役に立ったという場合には、元記事の作成者に感謝のお礼を言ってください。