如何使用 XSLT 删除基于值的特定 XML 元素

问题描述 投票:0回答:1

假设我们有要转换的 XML:

<?xml version="1.0" encoding="UTF-8"?>
<node>
    <field1>test</field1>
    <field2>/</field2>
    <field3>test2</field3>
    <field4>/<field4>
</node>

我想使用 XSLT 1.0 对其进行转换,以便复制整个结构和所有值,除了具有值“/”的元素。

到目前为止,我已经找到了这个,我认为这离我需要的并不遥远,但它还没有工作。

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

    <xsl:strip-space elements="*"/>
    <xsl:output indent="yes"/>

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

 <xsl:template match="//text()='/'" />

</xsl:transform>

所以我期望的输出是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<node>
    <field1>test</field1>
    <field3>test2</field3>
</node>

尝试此操作时,我收到未指定的错误(因为我正在使用免费的在线工具进行转换)。

xml xslt xslt-1.0
1个回答
0
投票

//text()='/'
不是有效的位置路径。

在任何情况下,您想要删除元素,而不是文本节点 - 所以您应该使用类似的东西:

<xsl:template match="*[.='/']" />
© www.soinside.com 2019 - 2024. All rights reserved.