この記事では、Dreamweaver で特殊文字を置き換える XSLT の存在しない文字エンティティを指定する方法について説明します。
Dreamweaver 以降では、ユーザーインターフェイスが簡素化されています。 そのため、この記事で説明されているオプションの一部が Dreamweaver 以降には存在しない場合があります。 詳しくは、こちらの記事を参照してください。
存在していない文字エンティティを指定する
XSLT では、特定のコンテキストで使用できない文字があります。たとえば、タグ間のテキストや属性値では、小なり記号(<)とアンパサンド(&)を使用できません。これらの文字が正しく使用されていない場合、XSLT 変換エンジンはエラーを表示します。この問題を解決するには、特殊文字を置き換える文字エンティティを指定することができます。
文字エンティティは、他の文字を表す文字列です。文字エンティティには、名前付きと番号付きがあります。名前付きエンティティは、アンパサンド(&)で始まり、その後に名前または文字が続き、セミコロン(;)で終わります。たとえば、< は左角度ブラケット文字(<)を表します。番号付きエンティティも同じように開始および終了しますが、ハッシュ記号(#)と数字で文字を指定します。
XSLT には次の 5 つの定義済みエンティティがあります:
文字 |
エンティティコード |
|---|---|
<(より小さい) |
< |
&(アンパサンド) |
& |
>(より大きい) |
> |
"(二重引用符) |
" |
‘(アポストロフィー) |
' |
XSL ファイルで他の文字エンティティを使用する場合は、XSL ファイルの DTD セクションで定義する必要があります。Dreamweaver では、Dreamweaver で作成された XSL ファイルの上部に表示される、いくつかのデフォルトエンティティ定義が提供されています。これらのデフォルトエンティティは、最も一般的に使用される文字を幅広く対象としています。
ブラウザーで XSL ファイルをプレビューすると、Dreamweaver は XSL ファイルで未定義のエンティティをチェックし、未定義のエンティティが見つかった場合に通知します。
XSLT ファイルに添付された XML ファイルをプレビューするか、XSLT 変換を含むサーバーサイドページをプレビューする場合、(Dreamweaver ではなく)サーバーまたはブラウザーが未定義のエンティティを通知します。エンティティ定義が欠落している XSL ファイルによって変換された XML ファイルを要求したときに Internet Explorer で表示される可能性があるメッセージの例を次に示します:未定義のエンティティ 'auml' への参照。Error processing resource 'http://localhost/testthis/list.xsl'. 行 28、位置 20 <p class=''test''>ä</p> -------------------^
ページのエラーを修正するには、エンティティ定義を手動でページに追加する必要があります。
未定義のエンティティ「auml」への参照。Error processing resource 'http://localhost/testthis/list.xsl'. 行 28、位置 20
<p class=''test''>ä</p>
-------------------^
存在していないエンティティ定義を指定する
この web ページには、HTML 4 および XHTML 1.0 で許可されている 252 のエンティティが含まれています。
たとえば、文字エンティティ Egrave が欠落している場合は、W3C web ページで「Egrave」を検索します。次のエントリが見つかります:
<!ENTITY Egrave CDATA "È" -- latin capital letter E with grave, U+00C8 ISOlat1 -->
例では、Egraveがエンティティ名で、Èがエンティティコードです。
<!ENTITY entityname "entitycode;">
例では、次のエンティティタグを入力します:<!ENTITY Egrave "È">
<!ENTITY Egrave "È">
同じ文字エンティティを繰り返し使用する場合は、「ファイル」>「新規」を使用したときにDreamweaverがデフォルトで作成するXSLファイルに定義を永続的に追加することをお勧めします。
Dreamweaverがデフォルトで作成するXSLファイルにエンティティ定義を追加する
Configuration/DocumentTypes/MMDocumentTypeDeclarations.xml
<documenttypedeclaration id="mm_xslt_1">
<!ENTITY entityname "entitycode;">