我遇到了与先前兄弟相关的逻辑,
尝试保持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
有什么帮助吗?
答案 0 :(得分:6)
在XSLT 1.0中,xsl:value-of给定节点集时,返回该节点集中第一个节点的字符串值,采用文档顺序。 (XSLT 2.0返回节点集中所有节点的字符串值)。
preceding-sibling :: node()返回一个节点集,其中包含节点的所有前面的兄弟节点。
如果您只想要前一个兄弟姐妹,请使用preceding-sibling :: * [1]。