こんにちは、Khazadと申します。
xsl:variableで、xsl:apply-templates の抽出条件を変更したくて
下記のようなXSLを作成したのですが、うまくいきません。
原因がわかる方。または別の方法があればご教授お願いできないでしょうか?
パーサーはMSXML3.0です。
(試したこと)
1 テンプレート内に<xsl:value-of select='$frid'/>を挿入すると、
ちゃんと1が表示されます。
2 [@rid='{$frid}']の部分を[@rid='$frid']に変更しても抽出は
行われません。
3 [@rid='{$frid}']の部分を[@rid='1']にすると抽出されます。
以下XSLのソースです
--------------------------------------------------------
<xsl:variable name = 'frid' select='1' ></xsl:variable>
<xsl:template match="/">
<xsl:apply-templates select="ROOT//*[@rid='{$frid}']"/>
</xsl:template>
<xsl:template match="*[@rid='{$frid}']">
<xsl:apply-templates select="*"/>
</xsl:template>
--------------------------------------------------------
No.3ベストアンサー
- 回答日時:
方手落ちでした。
すいません。<xsl:template match="*" name="foo">
あは
</xsl>
は、
<xsl:apply-templates select="*" name="foo" />
でいけたと記憶してます。
検証をしておりませんので、間違っている可能性が
ありますが、取り急ぎ。
うまくいかなかったら、りぷらいをお願いします。
ありがとうございます。
それを見本にテストしたのですが、
"Attribute 'name' is invalid on 'xsl:apply-templates'"
だそうです。(上記はエラーメッセージです。)
ただ、kaihou100さんの回答をヒントにW3C勧告のページをもう一度よく
見てみると、xsl:apply-templatesには、modeという属性があり、
それを用いると、意図した処理(テンプレートの切り替え)が可能に
なりました。
このあたりは単純にパーサーの実装の違いということでしょうね…。
No.4
- 回答日時:
アドバイスというより雑談ですが(^^;;
それは単に間違えただけです。すいません…
No.2
- 回答日時:
<xsl:template match="..." name="...">
...
</xsl:template>
のように、nameアトリビュートで逃げるのは、アウトですか?
MS-XMLは分からないのですが、Xalanならこれでうまくいくはずです。
この回答への補足
回答ありがとうございます。
これがうまくいくのならかなりBESTに近いです。
ただ、この場合、呼び出し方はどうなるのでしょうか?
apply-templatesなのか、call-templateなのか、
nameはどう指定するのか。
W3C 勧告 の翻訳ページを見てもそのあたりが探しきれなかったので…。
よろしければ教えていただけないでしょうか?
#実は、今回はテンプレートを1つにまとめてXSL:chooseで
#場合わけを行う方法で対処しました。
No.1
- 回答日時:
<xsl:template match="/">
<xsl:apply-templates select="ROOT//*[@rid=$frid]"/>
</xsl:template>
<xsl:template match="*">
~
</xsl:template>
でしょうか。
ありがとうございます。
とりあえずこれでうまくいきました。
xsl:templateのmatchの内部には変数での指定ができない
みたいですね…。
長くなるので省略していたのですが、実はそのtemplate内で
apply-templateを使用しているので、"*"ではループしてしまうの
です…。
とりあえずcall-template等でうまく行かないかがんばってみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- Excel(エクセル) excelVBAについて。 8 2022/12/11 13:47
- Excel(エクセル) ExcelVBAについて。 2 2022/12/10 20:08
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) excelVBAについて。 4 2022/11/21 16:15
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) excelVBAについて。 1 2022/11/30 06:16
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
reaper音声ファイルについて
-
head要素
-
ヤフー知恵袋みたいなサイトを...
-
MSFormsとは何ですか?
-
XPathで途中に名前空間が設定さ...
-
長いurlを短く表示させるように...
-
英語の単語の違いについて
-
ミニチュアCDの作り方を教えて...
-
XMLの編集?について
-
Mac Excel VBAについて
-
XMLとは何ですか?
-
特殊文字の検索方法
-
フォルダー内検索
-
公文書のxmlファイルの開き方が...
-
Webページに関するさまざまな情...
-
メールアドレスについて
-
マスターノード
-
エクセルのマクロについて教え...
-
クラウドサービスのlaaS paaS s...
-
flexBOX同士の間隔
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XMLのHTMLへの変換 (初心者)
-
XSLで、XMLの空タグを制御したい。
-
タグの有無の判定
-
htmlに変換されない
-
スタイルシートを使用したXM...
-
xslでの最小値、最大値の取得
-
ノードの並び替え
-
VBAからxml・スタイルシートを...
-
XSL内でJavaScriptを記述し、Ja...
-
xmlのテキストにリンクを張りた...
-
重複するものを消したい
-
<xsl:key>とtopreceding-siblin...
-
XSL中の改行、タブを無効にした...
-
スタイルシートについて
-
XMLをXSLを使いHTMLに変換した...
-
XSLTで直下のテキストのみ取得...
-
XSLTにてタグ名を取得する方法
-
xsl:variable の使用方法
-
東芝のDynabookなのですがアン...
-
CPUの考え方を教えてください ...
おすすめ情報