![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
XSLTで、次のような文字列の後ろの部分だけを変数に入れたいのですが、どうすればよいでしょうか?
1または2 → 2
3 → 3
<xsl:choose>
<xsl:when test="contains(val,'または')=true()">
<xsl:variable name="data" select="substring-after(val,'または')"/>
・・・・・・
のようにしてみましたが、
変数またはパラメータ 'data' への参照が解決できません。変数またはパラメータが定義されていないか、スコープにない可能性があります。
というエラーになってしまいました。
よろしくお願いします。
環境:Win2000+MSXML+IE6
No.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&TI …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Ruby vscode 文字化け 1 2022/05/21 19:17
- Visual Basic(VBA) Worksheets メソッドは失敗しました。のエラー処理のやり方 4 2022/05/29 21:29
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- その他(プログラミング・Web制作) ColabでのPytorchのエラー 1 2022/11/19 20:51
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- 数学 モデルのパラメータの定義がいまいちわかりません。 3 2022/10/11 15:16
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Visual Basic(VBA) Selenium Basicの件 5 2023/04/10 20:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
公文書のxmlファイルの開き方が...
-
ワードで文字を入力する時の変...
-
XMLを作成してもタグしか表示さ...
-
ファイル名の一部削除について
-
XMLの編集?について
-
スマホのスプレッドシートでセ...
-
Excel関数で、セル内の文字列の...
-
【BAT(バッチ)ファイル】Web...
-
XMLとは何ですか?
-
特殊文字の検索方法
-
フォルダー内検索
-
Webページに関するさまざまな情...
-
head要素
-
ヤフー知恵袋みたいなサイトを...
-
メールアドレスについて
-
マスターノード
-
エクセルのマクロについて教え...
-
クラウドサービスのlaaS paaS s...
-
flexBOX同士の間隔
-
マイナポータルの住宅借入金当...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XSLで、XMLの空タグを制御したい。
-
タグの有無の判定
-
XSLでXMLデータをタブ区切りデ...
-
XSLTで固定長データファイルを...
-
XSL中の改行、タブを無効にした...
-
xmlのテキストにリンクを張りた...
-
重複するものを消したい
-
XSLTがブラウザで表示されません。
-
うまく表示されない
-
文字列の取得
-
xsl:param要素をxsl:templateの...
-
value-ofの値を属性値とするには
-
XMLをXSLを使いHTMLに変換した...
-
XMLから指定テキストのみを抜き...
-
ある文字列を含むノードが存在...
-
VBAからxml・スタイルシートを...
-
xsl、xpath式の書き方について
-
XSLで特定のタグだけを出力する...
-
XSL内でJavaScriptを記述し、Ja...
-
XSLTで直下のテキストのみ取得...
おすすめ情報