- ベストアンサー
XSLTで文字列の取得方法について
- XSLTを使用して、文字列の一部を変数に格納する方法を調べています。具体的には、文字列の後ろの部分を抽出したいです。現在、substring-after関数を使用して試していますが、変数への参照が解決できないエラーが発生しています。
- Win2000+MSXML+IE6の環境で作業しています。XSLTを使用し、文字列の後ろの部分を変数に格納する方法について教えてください。現在、substring-after関数を試してみましたがエラーが発生しています。
- XSLTという言語を使用し、文字列の一部を変数に格納したいです。具体的には、文字列の後ろの部分を取得する必要があります。しかし、現在は変数への参照が解決できないというエラーが発生しています。ご教授いただければ幸いです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
sample.xml <?xml version="1.0" encoding="Shift_JIS" ?> <?xml-stylesheet type="text/xsl" href="huga.xsl"?> <PAGE> <person> <name>himajin100000または暇人拾万。ぶっちゃけどっちでもいいや</name> </person> <person> <name>架空人物</name> </person> </PAGE> huga.xsl <?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="http://purl.org/himajin100000/" version="1.0"> <xsl:output method="xml" encoding="Shift_JIS"/> <xsl:template match="/"> <my:hoge> <xsl:apply-templates/> </my:hoge> </xsl:template> <xsl:template match="person"> <xsl:choose> <xsl:when test="contains(name,'または')=true()"> <xsl:variable name="data" select="substring-after(name,'または')"/> <!--ここで宣言したdataの変数の有効範囲はここから--> <xsl:value-of select="$data" /> <!--変数の有効範囲はここまで。変数でも関数でも有効範囲のことをプログラミング用語で「スコープ」と言います。--> </xsl:when> <xsl:otherwise> <!-- ためしにコメント外して見てね。スコープ外で変数を使ってみると・・・・ <xsl:value-of select="$data" /> --> 処理 </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> #でもXSLTの変数って後から変更されるような仕様になっていないので(思想の問題だったと思う。文献を探すのが面倒くさいので探さないが)--> #あんまり見てないし役に立つかどうか知らないが、もしかしたら参考になるかもよ? http://www2.xml.gr.jp/log.html?MLID=xmldesign&TID=3922&F=0&L=10&R=1#M3922