我坚持与先前兄弟相关的逻辑,
试图保持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
有什么帮助吗?
解决方法
在XSLT 1.0中,xsl:value-of给定节点集时,返回该节点集中第一个节点的字符串值,采用文档顺序. (XSLT 2.0返回节点集中所有节点的字符串值).
preceding-sibling :: node()返回一个节点集,其中包含节点的所有前面的兄弟节点.
如果您只想要最后一个兄弟,请使用preceding-sibling :: * [1].