<ROOT>
<AA Aattr="xyz1">
<BB bAttr1="firefox" bAttr2="aaa" >
</BB>
<BB bAttr1="chrome" bAttr2="aaa" >
</BB>
<BB bAttr1="firefox" bAttr2="bbb" >
</BB>
<BB bAttr1="chrome" bAttr2="bbb" >
</BB>
</AA>
<AA Aattr="xyz2">
<BB bAttr1="firefox" bAttr2="aaa" >
</BB>
<BB bAttr1="chrome" bAttr2="ccc" >
</BB>
<BB bAttr1="firefox" bAttr2="ddd" >
</BB>
</AA>
我希望从节点“AA”中选择属性“Aattr”为“xyz1”的节点,并选择节点“BB”中属性“bAttr2”的不同/唯一值。
例如对于给定的XML,我需要输出“aaa”,“bbb”。
我尝试使用键来实现上述逻辑,但未成功。请帮忙解决。
<xsl:key name="nameDistinct" match="BB" use="@bAttr1"/>
<xsl:template match="/">
<xsl:for-each select="ROOT/AA[@Aattr='xyz1']">
<xsl:for-each select="BB[generate-id()=generate-id(key('nameDistinct',@bAttr2)[1])]">
<xsl:value-of select="@bAttr2"/>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
xml
"是<xsl:output>
声明的@method
属性的默认值。这意味着如果它是“xml”,我们根本不需要指定@method
属性。 - Dimitre Novatchev.html
(至少我不能记得曾经触及过此设置)。这隐含地确定了输出方法的默认值。因此,通过将默认扩展名设置为.xml
,可以使XMLSpy符合标准。 - Adrian W