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 回答