• ベストアンサー

xsl 内の実体参照を宣言する方法??

xsl 内で xhtml を使用する際に、&nbsp; などの実体参照のエンティティ宣言をしたいのですが、方法がわかりません。パーサは libxslt(AxKit) です。 例えばこんな感じかな、と思うのですが・・。 <?xml version="1.0" encoding="EUC-JP" ?> <!DOCTYPE html [ <!ENTITY nbsp " "> ]> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="EUC-JP"/> <xsl:template match="/"> <xsl:apply-templates /> </xsl:template> <xsl:template match="root"> <html> <head> ......

質問者が選んだベストアンサー

  • ベストアンサー
  • jo-ji
  • ベストアンサー率72% (26/36)
回答No.2

質問の中で <!DOCTYPE html [ <!ENTITY nbsp " "> ]> (document element typeがhtml)と書かれているため、&nbsp;をスタイルシート内で使いたいのか、それとも出力される文書の中にentityの宣言を含めたいのか、よく分からないのですが。 もしスタイルシートの中で使いたいだけならば、FlossenEngelさんの回答のとおりで解決するはず(べき)です。XTではスタイルシートの中で&nbsp;を使えるようになることを確認できました。本当に正しい書き方をしているのにパーサがエラーを吐くならば、他のパーサを使って下さいとしか... ただ、XSLTでは(正確な書き方をすればXPathのデータモデルでは)、entity referenceの形であっても、参照される文字を入れたのとまったく同等に扱われ、entity referenceを使う代わりに半角スペースを入れてもまったく同等なので、あまり意味がないです。もちろん、他のentity referenceを考えていて、この質問では簡単のためにnbspでの例を使ったならば、私の指摘はまったくのおせっかいですが。

その他の回答 (1)

回答No.1

<?xml version="1.0"?> <!DOCTYPE xsl:stylesheet [<!ENTITY nbsp " ">]> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> でできないでしょうか…。

rockaforte
質問者

補足

試したのですが、パーサがエラーを吐くようです。うーん・・

関連するQ&A