我是XSLT的新手,并且正在徘徊如何匹配'中间'孩子/兄弟节点? (所以基本上所有那些不是第一个或最后一个)
例如,假设我有以下xml ....
<FRUITS>
<FRUIT>Apple</FRUIT>
<FRUIT>Pear</FRUIT> <!--I want to match this in a template-->
<FRUIT>Banana</FRUIT> <!--I want to match this in a template-->
<FRUIT>..........</FRUIT>
</FRUITS>
上面的例子只是我正在处理的xml的一个非常简短的例子。然而在真正的xml中我永远不会知道有多少水果兄弟姐妹。所以换句话说,我希望构建一个语句来识别节点是否有兄弟姐妹和兄弟姐妹在一起。我看了下面的内容但没有快乐,因为语法不正确.....
<xsl:template match="FRUIT[preceding-sibling::FRUIT*]/[following-sibling::FRUIT*]" />
还有......
<xsl:template match="FRUIT[preceding-sibling::FRUIT*] and [following-sibling::FRUIT*]" />
这是使用XSLT 1.0
非常感谢任何帮助
答案 0 :(得分:2)
您还可以检查第一个和最后一个位置
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:apply-templates select="/FRUITS/FRUIT"/>
</xsl:template>
<xsl:template match="FRUIT[position() != 1 and position() != last()]">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="*"/>
</xsl:stylesheet>
答案 1 :(得分:1)
即将结束,请使用match="FRUIT[preceding-sibling::FRUIT and following-sibling::FRUIT]"
。