5

前の兄弟に関連するロジックに行き詰まっています。

XML をシンプルに保つように努めています。

<order>
<orderList>
<itemid><id>100</id></itemid>
<itemid><id>100</id></itemid>
<itemid><id>111</id></itemid>
<itemid><id>111</id></itemid>
<itemid><id>123</id></itemid>
<itemid><id>324</id></itemid>
<itemid><id>244</id></itemid>
<itemid><id>244</id></itemid>
 </orderList>
</order>

以下のxslを使用して、各ノードの前の兄弟を見つけようとしています。このロジックをより大きなxslに合わせるには、各ループに使用する必要があります...

  <html>
  <body>
     <table border="1">
   <xsl:for-each select="order/orderList/itemid">
      <tr>
        <td>itemid</td>
        <td><xsl:value-of select="id" /> </td>
        <td> <xsl:value-of select="preceding-sibling::node()"/>   </td>
      </tr>
      </xsl:for-each>
    </table>    
  </body>
  </html>
</xsl:template>

I get these Results 

itemid 100  
itemid 100 100   
itemid 111 100 
itemid 111 100   - expecting 111
itemid 123 100   - expecting 111 etc
itemid 324 100 
itemid 244 100 
itemid 244 100 

助けてください?

4

1 に答える 1

9

XSLT 1.0 では、xsl:value-of はノード セットを指定すると、そのノード セットの最初のノードの文字列値をドキュメント順に返します。(XSLT 2.0 は、ノード セット内のすべてのノードの文字列値を返します)。

previous-sibling::node() は、ノードの先行するすべての兄弟を含むノード セットを返します。

直前の兄弟のみが必要な場合は、preceding-sibling::*[1] を使用します。

于 2012-07-27T02:48:19.310 に答える