9

foreachを使用せずに、X位置のノード値であるxsltを使用するにはどうすればよいですか?

<items>
<item1>x</item1>
<item2>x</item2>
<item3>x</item3>
</items>

これはプログラミングの意味で説明されています:

<xsl:value-of select="Items/Item[2]"/>

==================================================

次のxmlで、質問を少し拡張します。

<items>
    <about>xyz</about>
    <item1>
       <title>t1</title>
       <body>b1</body>
    </item1>
    <item2>
       <title>t2</title>
       <body>b2</body>
    </item2>
    <item3>
       <title>3</title>
       <body>3</body>
   </item3>
</items>

秒のアイテムタイトルを選択するにはどうすればよいですか。

4

4 に答える 4

17

拡張された質問への回答。必要な要素のノードセットを選択した場合は、位置の値を使用できます。

<xsl:value-of select="(items//title)[2]"/>

また:

<xsl:value-of select="(items/*/title)[2]"/>

位置で選択する前に、必要なノードセットを返すために必要な括弧の使用法に注意してください。


あなたは「プログラミングの意味で」あなたが呼んだものを使うことができます。*ただし、子要素の名前が不明なため、次のようにする必要があります。

<xsl:value-of select="items/*[2]"/>

XSLTのノードセットはゼロベースではないことに注意してください。上記の方法では、 3番目のアイテムではなく、2番目のアイテムを選択しています。

position()現在の位置を次のような数値と比較する場合は、本当に必要です。

<xsl:value-of select="items/*[position()>2]"/>

位置が2より大きいすべてのアイテムを選択します。他にposition()不可欠な場合は、位置の値が文字列型の変数である場合です。

<xsl:variable name="pos" select="'2'"/>
<xsl:value-of select="items/*[position()=$pos]"/>
于 2011-09-17T15:06:13.223 に答える
4

次のxmlで、質問を少し拡張します。

<items> 
    <about>xyz</about> 
    <item1> 
       <title>t1</title> 
       <body>b1</body> 
    </item1> 
    <item2> 
       <title>t2</title> 
       <body>b2</body> 
    </item2> 
    <item3> 
       <title>3</title> 
       <body>3</body> 
   </item3> 
</items>

秒のアイテムタイトルを選択するにはどうすればよいですか

使用

/*/*[starts-with(name(), 'item')][2]/title

これにより、次のものが選択されます。すべてtitleの子の2番目の子であるすべての要素-名前が文字列で始まる最上位の要素の要素"item"

次のような式に注意してください

(items/*/title)[2]

また

(items//title)[2]

XML"chapter"ドキュメントに子を持つ(たとえば)他の要素がある場合title、上記の式でchapter/title要素を選択できますが、ここでのタスクはtitle、親がしかできないドキュメントの2番目の要素を選択することです。 itemXYZ要素である。

于 2011-09-17T16:58:58.623 に答える
2

position()を使用できます

<xsl:value-of select="/items/*[position()=2]/text()"/>
于 2011-09-17T14:58:57.133 に答える
2

あなたはそれを行うことができます

<xsl:value-of select="items/child[position()=2]"/>
于 2011-09-17T14:59:07.053 に答える