XMLやXSL、XSLTのファイル名文字化けでの苦悩を実装してみて開発してみて記録しました
サンプルも少しあります。。。
WEB開発でXMLを覚えて便利に使っていたのですが。。。
どうやら問題がありました。。。;
(第1回はこちらです⇒XML、XSL、XSLTの実装・開発記録、サンプルあり。。。)
XSLTでXMLを「ローカルマシン」で実行する場合ですが!!!
2バイト文字が、全角文字が扱いにくい。
<xsl:value-of select=”description”/>
で、出力するだけなら全角(2バイト文字)でも全然問題ないようです。
そこで問題となるのがタグの属性値に2バイト文字をセットする場合です。
↓
<xsl:template match=”item”>
<xsl:element name=”a”>
<xsl:attribute name=”href”>
../data/新規 Word 文書.doc
</xsl:attribute>
<xsl:value-of select=”title”/>
</xsl:element>
</xsl:template>
「新規 Word 文書.doc」のファイル名がエンコードされて出力されるため
ローカルマシンでは正しく開きません。。。
どうしようか。。。。。。。。。
なんだかんだで1日使いましたが何とか、2バイト文字の回避策見つけました。
こんな感じです。;;;;;;;;;;;;;;
<xsl:template match=”item”>
<xsl:element name=”a”>
<xsl:attribute name=”id”>
<xsl:value-of select=”linkId”/>
</xsl:attribute>
<xsl:attribute name=”href”>
../data/新規 Word 文書.doc
</xsl:attribute>
<xsl:value-of select=”title”/>
</xsl:element>
</xsl:template>
<xsl:template match=”itemPath”>
var testdata = ‘../data/新規 Word 文書.doc’;
document.all.<xsl:value-of select=”linkId”/>.href=testdata;
</xsl:template>
ようするに、Javascriptでhref属性値に入れなおしてあげればよかったということです。
何故なら、最初のほうで述べたように直に出力するなら2バイト文字もエンコードされませんので
スクリプトにhref属性値に出力したい値を出力して、Javascriptでhref属性値に入れなおしてあげれば解決です。
なんて回りくどいことを。。。。
もっと簡単にできる方法をお持ちでしたらご教授ください。
もう一度言いますが、ローカルマシンで直実行するときに問題なのです。
私の製作しているアプリの取説用ですから。。。あしからず
■WEBサーバからのHTTP経由なら問題ないようです↓
<a target=”_blank” href=”http://www.atmarkit.co.jp/fxml/askxmlexpert/035xslterr/033xslterr.html”>http://www.atmarkit.co.jp/fxml/askxmlexpert/035xslterr/033xslterr.html</a>
xsltの基本はこちらを参考に⇒XML、XSL、XSLTの実装・開発記録、サンプルあり。。。)