gpt4 book ai didi

xslt - 根据其他元素的值删除元素 -- XSLT

转载 作者:行者123 更新时间:2023-12-01 08:07:07 25 4
gpt4 key购买 nike

我有一个样式表,用于根据其他元素的值删除某些元素。但是,它不起作用......

示例输入 XML

<Model>
<Year>1999</Year>
<Operation>ABC</Operation>
<Text>Testing</Text>
<Status>Ok</Status>
</Model>

如果 Operation 值为“ABC”,则从 XML 中删除 Text 和 Status 节点。并给出以下输出。

<Model>
<Year>1999</Year>
<Operation>ABC</Operation>
</Model>

这是我正在使用的样式表,但即使操作不是“ABC”,它也会从所有 XML 中删除文本和状态节点。

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:variable name="ID" select="//Operation"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Text | Status">
<xsl:if test ="$ID ='ABC'">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

提前致谢

当存在命名空间时,我将如何做同样的事情

<ns0:next type="Sale" xmlns:ns0="http://Test.Schemas.Inside_Sales">

最佳答案

这是一个完整的 XSLT 转换 -- 简短(没有变量,没有 xsl:ifxsl:choosexsl:when, xsl:otherwise):

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>

<xsl:template match=
"*[Operation='ABC']/Text | *[Operation='ABC']/Status"/>
</xsl:stylesheet>

当此转换应用于提供的 XML 文档时:

<Model>
<Year>1999</Year>
<Operation>ABC</Operation>
<Text>Testing</Text>
<Status>Ok</Status>
</Model>

产生了想要的、正确的结果:

<Model>
<Year>1999</Year>
<Operation>ABC</Operation>
</Model>

关于xslt - 根据其他元素的值删除元素 -- XSLT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10628311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com