※ ChatGPTを利用し、要約された質問です(原文:XSL(異なるノードからエレメントを取得))
XSLで異なるノードからエレメントを取得する方法
このQ&Aのポイント
XSLを用いて異なるノードからエレメントを取得する方法を教えてください。
具体的には、MenulistのMenuのItemが1の場合、SetlistのSet Noが1のエレメントを取得したいです。
このような要件を満たすXSLの書き方を教えてください。
XSLを書き始めたばかりでつまずいています。
下記のようなXMLファイルがあるとして…
===
<Menulist>
<Menu No="1" Item="3" Time="100"/>
<Menu No="2" Item="1" Time="60"/>
<Menu No="3" Item="1" Time="120"/>
<Menu No="4" Item="2" Time="10"/>
</Menulist>
<Setlist>
<Set No="1">
<Set_name Name="Push Up" />
<Set No="2">
<Set_name Name="Run" />
<Set No="3">
<Set_name Name="Swim" />
</Setlist>
=========
ここで、XSLを用いてMenulistのMenuのItemが1の時には、SetlistのSet Noが1の"PushUP"を取り出して、Menu Noとともに、Menuの数だけ表示したいのです。
こうしたあるノードのエレメントの値を使って、別のノードのエレメントの値を取得する方法をご教示ください。
お礼
ありがとうございます!! 元のXML(…質問するにしてはいい加減な書き方でした…反省…)までちゃんと添削いただき、且つ、具体的に教えていただきありがとうございました! それから、学習アドバイスもありがとうございます。参考にさせていただきます。 早速、TEXT出力で実験してみたところ、 1 Push Up 2 Run 3 Swim 4 Squat と出力されてしまいました。そこで、いただいたコードを指でなぞりながら考えること数分、 <xsl:variable name="no"><xsl:value-of select="@No" /></xsl:variable> を <xsl:variable name="no"><xsl:value-of select="@Item" /></xsl:variable> と書き換えることで、 3 Swim 1 Push Up 1 Push Up 2 Run と、期待していた出力を得ることが出来ました!! なんだかもやもやっとしていたのが「ぱっ」と明るくなった感じです。(^^) 今後とも宜しくお願いいたします。