【问题标题】:Filter XYZ not containing nodes using XSLT使用 XSLT 过滤不包含节点的 XYZ
【发布时间】:2021-10-25 18:27:01
【问题描述】:

我是 xslt 转换的新手,我们需要使用 xslt 进行有效负载转换 您能帮我过滤不包含以下输入节点的 XYZ 吗

输入:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Test>
<responseStatus>SUCCESS</responseStatus>
<responseDetails>
    <limit>1000</limit>
    <offset>0</offset>
    <size>55</size>
    <total>55</total>
</responseDetails>
<data>
    <row>
        <id>131</id>
        <documentNumber>123</documentNumber>
        <version>131_1_0</version>
        <title__v>test</title__v>
        <document_business_unit__cr.name__v>
            <value>Global XYZ</value>
        </document_business_unit__cr.name__v>
    </row>
    <row>
        <id>131</id>
        <documentNumber>123</documentNumber>
        <version>131_1_0</version>
        <title__v>test</title__v>
        <document_business_unit__cr.name__v>
            <value>Local XYZ</value>
        </document_business_unit__cr.name__v>
    </row>
    <row>
        <id>131</id>
        <documentNumber>123</documentNumber>
        <version>131_1_0</version>
        <title__v>test</title__v>
        <document_business_unit__cr.name__v>
            <value>Global</value>
        </document_business_unit__cr.name__v>
    </row>
</data>
</Test>

期望的输出:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Test>
<responseStatus>SUCCESS</responseStatus>
<responseDetails>
    <limit>1000</limit>
    <offset>0</offset>
    <size>55</size>
    <total>55</total>
</responseDetails>
<data>
    <row>
        <id>131</id>
        <documentNumber>123</documentNumber>
        <version>131_1_0</version>
        <title__v>test</title__v>
        <document_business_unit__cr.name__v>
            <value>Global</value>
        </document_business_unit__cr.name__v>
    </row>
</data>
</Test>

您能帮我将上述输入的 XSLT 代码转换为所需的输出吗

【问题讨论】:

  • 为此只需添加一个空模板以匹配 xsl 中的 data/row[contains(descendant::value, 'XYZ')]

标签: xml xslt xslt-1.0 xslt-2.0 middleware


【解决方案1】:

在这里你必须阻止所有带有文本'XYZ'的row节点。

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

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

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

  <xsl:template match="row[contains(descendant::value, 'XYZ')]"/>

</xsl:stylesheet>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多