当前位置: 首页 > 知识库问答 >
问题:

XSLT删除空节点

戚甫
2023-03-14

输入:

<Root><output>
<queries>
    <query name="Test">
        <parameters>
            <parameter>298674,298673,298675,298676</parameter>
        </parameters>
        <queryResults>
            <record id="1">
                <column name="Order">272334</column>
                <column name="Task">272093</column>
                <column name="FirstAction">2709305</column>                     
            </record>
            <record id="2">
                <column name="Order">272334</column>
                <column name="Task">272093</column>
                <column name="FirstAction">2709301</column>
            </record>
            <record id="3">
                <column name="Order">272334</column>
                <column name="Task">272093</column>
                <column name="FirstAction">2709306</column>
            </record>
            <record id="4">
                <column name="Order">268997</column>
                <column name="Task">268756</column>
                <column name="FirstAction">2709307</column>
            </record>
            <record id="5">
                <column name="Order"/>
                <column name="Task"/>
                <column name="FirstAction">2709307</column>
            </record>
        </queryResults>
    </query>
</queries></output>

如何删除列顺序中没有值的记录?

期望输出:

<Root><output>
    <queries>
        <query name="Test">
            <parameters>
                <parameter>298674,298673,298675,298676</parameter>
            </parameters>
            <queryResults>
                <record id="1">
                    <column name="Order">272334</column>
                    <column name="Task">272093</column>
                    <column name="FirstAction">2709305</column>                     
                </record>
                <record id="2">
                    <column name="Order">272334</column>
                    <column name="Task">272093</column>
                    <column name="FirstAction">2709301</column>
                </record>
                <record id="3">
                    <column name="Order">272334</column>
                    <column name="Task">272093</column>
                    <column name="FirstAction">2709306</column>
                </record>
                <record id="4">
                    <column name="Order">268997</column>
                    <column name="Task">268756</column>
                    <column name="FirstAction">2709307</column>
                </record>                   
            </queryResults>
        </query>
    </queries></output>

我当前的XSL只删除空节点

<xsl:strip-space elements="*"/>
 <xsl:template match="@*|node()">
  <xsl:copy>
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>
<xsl:template match="*[not(child::node())]"/>

我似乎无法掌握模板匹配来删除整个“记录”标签。。。非常感谢你!

共有1个答案

卜昂熙
2023-03-14

添加一个新模板以删除按束顺序没有值的记录

<xsl:template match="record[column[ @name='Order']= '']"/>

此匹配记录在具有名称顺序的列中没有值,并忽略它们。

 类似资料:
  • 我正在尝试处理这个XML文件,我想根据最新的节点值删除所有匹配的节点。在以下示例中,最新节点值为“${DELETE}”,最新节点值将始终为“${DELETE}”,并且该节点将始终位于XML文件的底部。 示例: 预期产出为:

  • 我的目标是在StatusDate为1900-01-01T00:00:00时使用此XSLT样式表删除整个LoanSecondaryStatus节点,但在其他日期时保留该节点。 我有以下XML: 这是我用来尝试删除Loan二级状态节点的XSLT:

  • 如何删除转换中的空? 下面是结果XML中显示的示例。注意空的。 我正在与VisualStudio2019 16.8.4合作。 这是我需要转换的源XML。 以下是我为XSLT制作的内容: 然而,输出会产生: 期望的输出是这样的:

  • 这是我的xml示例: 这是我的模板: 问题是,当我通过调用template创建输出文件时,输出元素

  • 我是一名java程序员,如果我的问题有点愚蠢,我很抱歉。 我有一个JSON对象,看起来像这样: 我想遍历并删除每个与之关联的空值元素,比如“generated_name_2”和“n”。我不知道这些元素的名称是什么,也不知道它嵌套在JSON树中有多远。 我知道我必须写一个递归程序,这就是我想到的: 当然,这是行不通的,但我真的不确定从这里去哪里,我在互联网上搜索也没有用。 请有人帮帮我!

  • 我试图使用XSLT从Met Office web服务的以下XML中提取标题,但是我的XSLT select返回空白。 资料来源: 我的XSLT: 我已经将根更改为/RegionalFcst,并尝试了其他类似的更改,例如在FcstPeriods之前添加一个前导斜杠,但在从源XML中删除第一行和最后一行之前,一切都不起作用-然后它就完美地工作了。 这在测试中很好,但我当然想使用Met Office提供