- - PR -
出力する文字コードをデータによって変える方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-04-05 08:59
XMLデータ中のlang属性によって、出力する文字コードを変えたいのですが、
XSLTで行う方法はないでしょうか? (xsl:outputを<xsl:if>で判定するようにしてみましたが、 xsl:outputはxsl:templateの外にあるため、<xsl:if>は使用できませんでした。) なお、出力したい文字コードは、lang属性が"ja"の場合Shift_JIS、"en"の場合UTF-8です。 ■入力のXMLデータ <?xml version="1.0" encoding="Shift_JIS"?> <abcde lang="ja">あいうえお</abcde> ■Shift_JISで出力するスタイルシートの記述例 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="Shift_JIS"></xsl:output> <xsl:template match="/"> <html> <head></head> <body> <xsl:value-of select="."></xsl:value-of> </body> </html> </xsl:template> </xsl:stylesheet> ■出力されるHTMLデータ <html> <body>あいうえお</body> </html> |
|
投稿日時: 2006-04-05 09:21
htmlもxslも結局xmlですよね?
|
|
投稿日時: 2006-04-05 11:04
XSLT 1.0 で、XSLT を一回だけ適用する場合には不可能です。
kumaさんが書かれているように XSLT スタイルシートも XML なので、
と、2回 XSLT を適用すれば良さそうです。 |
|
投稿日時: 2006-04-05 12:19
load済みの xslt をDOM で書替えたり(パラメータ渡し的)
xslの include、import で2段処理 <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="Shift_JIS"/> <xsl:include href="..."/> </xsl:stylesheet> か <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="UTF-8"/> <xsl:include href="..."/> </xsl:stylesheet> ... は同じファイル名 を lang で選択(xslt、1段ではできません) |
|
投稿日時: 2006-04-05 23:06
回答ありがとうございます。
xsltを2段で適用する方向で検討してみます。 |
1