Xml XSLT:如何防止重复元素
我有以下xml(…省略了一些元素和属性): 我用元素Xml XSLT:如何防止重复元素,xml,xslt,Xml,Xslt,我有以下xml(…省略了一些元素和属性): 我用元素Zeitbezug复制了这个xml: <root> ... <Auswertungsart Code="2"/> ... <Zeitbezug Code="3"/> <Zeitbezug Code="3"/> <Flaechenbezug Code="2"/> ... </root
Zeitbezug
复制了这个xml:
<root>
...
<Auswertungsart Code="2"/>
...
<Zeitbezug Code="3"/>
<Zeitbezug Code="3"/>
<Flaechenbezug Code="2"/>
...
</root>
...
...
...
我该如何解决这个问题?
注意:
code
属性的值是通过参数Zeitbezug设置的,我怀疑问题出在您省略的XML中,例如,输入中是否有任何其他AuswerTungStart
或Flaechenbezug
元素?如果您在输入中只使用每个元素中的一个来运行测试,是否会得到所需的结果?否,两个元素只出现一次。我怀疑我插入的内容也用于selectNo的副本,输出树不参与输入处理。好吧,你没有向我们展示的东西是罪魁祸首。我在Oxygen中运行了您的XML(减去…
行)和XSL,只得到一个Zeitbezug
输出。是的,我真傻。改变了两次。。。但是,感谢您澄清输出树不参与输入处理我怀疑问题出在您省略的XML中,例如,输入中是否有其他Auswertungsart
或Flaechenbezug
元素?如果您在输入中只使用每个元素中的一个来运行测试,是否会得到所需的结果?否,两个元素只出现一次。我怀疑我插入的内容也用于selectNo的副本,输出树不参与输入处理。好吧,你没有向我们展示的东西是罪魁祸首。我在Oxygen中运行了您的XML(减去…
行)和XSL,只得到一个Zeitbezug
输出。是的,我真傻。改变了两次。。。但是,感谢您澄清输出树不参与输入处理
<xsl:stylesheet>
<xsl:param name="Zeitbezug"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Flaechenbezug">
<xsl:choose>
<xsl:when test="../Auswertungsart[not(@Code='1')]">
<Zeitbezug Code="{$Zeitbezug}"/>
</xsl:when>
<xsl:otherwise>
<Zeitbezug/>
</xsl:otherwise>
</xsl:choose>
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>
<root>
...
<Auswertungsart Code="2"/>
...
<Zeitbezug Code="3"/>
<Zeitbezug Code="3"/>
<Flaechenbezug Code="2"/>
...
</root>