加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml – 检查OUTPUT中的重复元素

发布时间:2020-12-16 23:18:59 所属栏目:百科 来源:网络整理
导读:我有一些 XML,例如它看起来像这样: root field1test/field1 f2t2/f2 f2t3/f2/root 我想用XSLT转换它,但是我想要在输出中抑制第二个f2元素 – 如何处理我的模板内部,以便在处理源中的第二个f2元素时查看输出中是否已存在f2元素?我的XSLT目前看起来像这样:
我有一些 XML,例如它看起来像这样:

<root>
    <field1>test</field1>
    <f2>t2</f2>
    <f2>t3</f2>
</root>

我想用XSLT转换它,但是我想要在输出中抑制第二个f2元素 – 如何处理我的模板内部,以便在处理源中的第二个f2元素时查看输出中是否已存在f2元素?我的XSLT目前看起来像这样:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="no" omit-xml-declaration="yes" standalone="no" />
  <xsl:template match="/">
    <xsl:for-each select="./root">
      <output>
        <xsl:apply-templates />        
      </output>
    </xsl:for-each>
  </xsl:template>
  <xsl:template match="*" >
      <xsl:element name="{name(.)}">
        <xsl:value-of select="." />
      </xsl:element>
  </xsl:template>
</xsl:stylesheet>

我需要对我认为的模板中的xsl:元素进行某种检查,但是我不确定如何查询输出文档以查看元素是否已经存在.

编辑:忘记预标签,代码现在应该可见!

解决方法

这取决于你想要的系统范围.

即,你只关心同一父母的子元素,或同一级别的所有元素(如果你喜欢的话,是“堂兄弟”)或文档中任何位置的元素……

在第一种情况下,您可以检查前一个兄弟轴以查看是否存在具有相同名称的任何其他元素.

<xsl:if test="count(preceding-sibling::node()[name()=name(current())])=0">
  ... do stuff in here.
</xsl:if>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读