プロが教えるわが家の防犯対策術!

XSLTで次のような形の記載をしたいのですが、可能でしょうか?
content属性内に、タグを入れたいのですが、エラーになってしまいます。
よろしくお願いします。

XSLT
<meta><xsl:attribute name="content">1<br>2<br>3</xsl:attribute></meta>
↓  変換
XHTML(↓という形にしたい)
<meta content="1<br>2<br>3"/>

【エラー】
終了タグ 'xsl:attribute' が開始タグ 'br' と一致していません。リソース 'file:///xxx.xsl' の実行エラーです...

<meta><xsl:attribute name="content">1<br>2<br>3</xsl:attribute></meta>

環境:WinXP+IE7

A 回答 (3件)

<xsl:attribute>は、XSL変換をするまで分からない出力属性を作成するときに使うもので、既にcontentという属性名を知っている場合は、使う必要はないです。

いまの場合は、contentという属性名を知っているわけだから、DTDでcontent属性をCDATA指定してやれば、XMLタグ内の要素でもなんでも入れることができます。


”<xsl:attribute> 要素は、ドキュメントを変換するまでわからない出力属性を動的に作成するのに非常に便利ですが、既に属性を知っている場合は、この要素を使用する必要はありません。たとえば、前の例で、IMG 要素に src 属性が含まれている必要があることが既にわかっているかもしれません。その場合は、ドキュメントを変換する前に、その要件がわかっているため、<xsl:attribute> 要素を使用する必要はありません。”

http://msdn.microsoft.com/ja-jp/library/ms256165 …

この回答への補足

教えていただいたサイトを参考に、もう少しやってみます。
ありがとうございました。

補足日時:2009/06/29 18:55
    • good
    • 0

その会社の仕様として


 meta要素に content という名前の属性をつける
という項目があるのであれば、
<xsl:attribute> を使う必要は無いんじゃないかと思うんですが。

また仕様としてDTDが指定されていれば、DTDの中に
<!ATTLIST meta content CDATA #IMPLIED>
を追加してやれば、meta要素のcontent属性に対しては、 '<' や '>' 等のマークアップ文字を単なる普通の文字として認識させることができます。

この回答への補足

<xsl:attribute>を使っているのは、content属性に、XMLタグ内の要素を入れる必要があるので、使っています。
そちらのやり方を、考えた方がいいということでしょうか?

補足日時:2009/06/29 11:23
    • good
    • 0

content属性内に<br>を入れる必要性が分からないのですが、エラーになってしまうのは、XSLTプロセッサが「<br>」をHTMLの改行ではなく、「br」という名前のタグと認識するからです。

    • good
    • 0
この回答へのお礼

ありがとうございます。

<br>を入れる必要性ですが、他の会社の仕様です。

「<br>」というテキストと認識させることは出来ないのでしょうか?

お礼日時:2009/06/26 19:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!