使用 xslt 找出其父元素中当前元素的计数

维尔瓦西尼
<a>
  <b/>
  <b/>
  <c/>
</a>

我想找出当我的节点位于当前元素中时我正在解析的当前元素的计数,并且我也不知道元素名称。

我试过了 :

<xsl:for-each select="a">
   <counter localName="{local-name()}" count="{count(node()/*)}"/>
</xsl:for-each>

我期望的输出:

 <counter localName="b" count="2"/>
 <counter localName="b" count="2"/>
 <counter localName="c" count="1"/>

这给出了错误的输出,我该如何实现呢?

michael.hor257k

我猜你想做:

<xsl:template match="/a">
    <root>
        <xsl:for-each select="*">
            <counter localName="{local-name()}" count="{count(../*[local-name()=local-name(current())])}"/>
        </xsl:for-each>
    </root>
</xsl:template>

这将返回:

<root>
  <counter localName="b" count="2"/>
  <counter localName="b" count="2"/>
  <counter localName="c" count="1"/>
</root>

请注意,使用local-name()您是故意忽略命名空间。因此,如果输入恰好是:

<a>
  <b/>
  <ns1:b xmlns:b="http://example.com/b"/>
  <c/>
</a>

尽管很明显,这两个b计算在一起的节点除了巧合之外没有任何共同点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章