No.2ベストアンサー
- 回答日時:
なるほど。
補足していただいた説明で、質問の意味は分かりました。XSLTの仕様上は、xsl:stylesheetの子要素としてxsl:param要素を置いた場合、そこから後ろのxsl:templateでは参照できるはずです。
そこで、以下のような短いXSLTスタイルシートを用意して、
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:param name="n" select="test"/>
<xsl:template match="abc[@attr=$n]">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="@* | text()"></xsl:template>
</xsl:stylesheet>
以下のXMLファイルに適用してみたところ、
<data>
<abc attr="test1">item1</abc>
<abc attr="test">item2</abc>
<abc attr="test2">item3</abc>
</data>
Xalanでは正しく item2 と出力されました。
しかしXTでは、何も出力されず、XTのオプションで n=test のようにパラメータを設定すると、正しく出力されました。
私の解釈では、Xalanの動作の方が正しいような気がします。
したがって、もしXTを使っているならば、この実装上の違いが原因かと思われます。
この場合、XTの作者に直してもらうか、Xalanなど別のXSLTプロセッサを使うしか、解決方法はないかもしれません。
ありがとうございました。
パラメータの値を外部から渡すことを意図していたので、目的はかなえることができました。
質問前に実行すべきでしたが、問題の範囲を狭くした上でのテストというつもりで、躓いてしまっていたので、たいへん助かりました。
No.1
- 回答日時:
「xsl:param要素を」という意味がよく分からないのですが、parameterの値を参照するには$記号を以下のように使います。
nというparameterにtestが入っているならば、
match="abc[@attr=$n]"
ちなみに、parameterには有効範囲があるので、以下のようにxsl:stylesheetの子要素としてxsl:paramを置く必要があります。
<xsl:stylesheet ... >
<xsl:param name="n" select="test"/>
<xsl:template ... > ... </xsl:template>
...
</xsl:stylesheet>
質問の意味を勘違いしてたらすみません。(その場合は、もう少し丁寧に説明していただかないと、皆さん答えにくいと思います)
ありがとうございます。
説明が不十分であった点、お詫びいたします。
申し訳ありませんでした。
どこか、これは解決できない問題ではないかと考えていた部分があり、あのような質問になってしまいました。
あらためて質問させてください。
質問の要点としては、下記のように書いた場合、param"n"の値をそれぞれのtemplateが認識するかどうか、あるいはどのようにすれば認識するかという点でした。
<xsl:stylesheet ... >
<xsl:param name="n" select="test"/>
<xsl:template ... > ... </xsl:template>
...
</xsl:stylesheet>
例えば、属性にたいしてではありませんが、
下記のようなtemplateを用いた場合、希望通りの結果を得ることができるが、上記のようにparamの宣言をtemplate外で行った場合、宣言は認識されているようでエラーにはならないが、値が認識されず結果を得ることができません。
<xsl:template match="item">
<xsl:param name="n" select="test"/>
<xsl:value-of select="$n"/>
</xsl:template>
同様に、下記のようにtemplate外で宣言されたparamを使用した場合、確かにエラーにはならないのですが、やはり結果を得ることができません。この場合、template内でparamを定義することは、親子関係の上からもできないため、これは解決不可能な問題なのかもしれないと考えました。
<xsl:template match="abc[@attr=$n]"/>
とはいえ、template外の定義がなければ、不明なparamの使用によるエラーになるのですから、値をtemplateに認識させることもできるはずですよね。あるいは別のtemplateが値を隠すというようなことでもあるのでしょうか?
どうかご教示おねがいします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
XSLTで固定長データファイルを...
-
xmlのテキストにリンクを張りた...
-
スタイルシートを使用したXM...
-
XMLファイルの作り方がわかりま...
-
CPUの考え方を教えてください ...
-
XMLで要素が記述された順番に意...
-
XML、XSLTの適応エラー(IEから...
-
ルート要素ノードが2個ある場合?
-
東芝のDynabookなのですがアン...
-
特殊記号が勝手にエスケープさ...
-
XPathで途中に名前空間が設定さ...
-
xmlstarletで他ファイルからエ...
-
VB6.0でDOMを使用して...
-
xmlファイルが上手にHTMLに変換...
-
VBAのXML処理でメモリが足りない?
-
XMLファイル内のデータ(値)を変...
-
windowsAPIとは何ですか?
-
このエラー、何とかなりません...
-
C#でTreeViewのCheckBoxのサイ...
-
TreeViewで複数ノードの選択は...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
タグの有無の判定
-
うまく表示されない
-
XSLTにてタグ名を取得する方法
-
xslでの最小値、最大値の取得
-
htmlに変換されない
-
ノードの並び替え
-
XSLで、XMLの空タグを制御したい。
-
スタイルシートを使用したXM...
-
xmlのテキストにリンクを張りた...
-
XSLTで固定長データファイルを...
-
XMLのHTMLへの変換 (初心者)
-
XMLをXSLを使いHTMLに変換した...
-
XMLとXSLTでリンクを張る方法
-
xsl:variableでの抽出条件の変更
-
XSL内でJavaScriptを記述し、Ja...
-
XMLからHTMLへの変換方法について
-
yahoo API ASP.NETで表示させる...
-
javaのTransformerでエラー
-
XSL(異なるノードからエレメン...
-
XML,XSL,JavaScriptの連携
おすすめ情報