如何排除具有零值的元素-XSLT?

Posted

技术标签:

【中文标题】如何排除具有零值的元素-XSLT?【英文标题】:How to exclude elements with zero values -XSLT? 【发布时间】:2021-10-23 16:13:31 【问题描述】:

我有 100 多个要为其映射的元素的列表。我想检查每个元素是否包含任何“0”值。如果它包含零值,那么我应该从输出中消除该输入文档中存在的特定元素。 这是我下面的示例 xml:

<xml>
<xmls>
<A>0.00</A>
<B>0</B>
<C>123</C>
</xmls>
</xml>

我将元素的值存储在一个变量中,并在我的 xslt 中为每个元素这样写:

<xsl:if test="string-length($C) > 0">
<Z>123</Z>
</xsl:if>

我也试过了:

<xsl:template match="xmls[not(string()]"/>

很难把这个条件写到每一个元素上,他们还有其他方法可以为整个文档做到这一点吗?

【问题讨论】:

【参考方案1】:

使用

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

  <xsl:template match="*[not(*) and . = 0]"/>

如果你想删除所有具有数值0的元素。

【讨论】:

以上是关于如何排除具有零值的元素-XSLT?的主要内容,如果未能解决你的问题,请参考以下文章

XSLT:XML 第一个属性需要转换为具有第二个属性值的元素

使用 xslt 2.0 合并具有相同父属性值的元素的 xml 内容

XSLT / Muenchian 分组:如何从组中选择具有某些子元素的元素?

如何在 XSLT 中对值进行分组和求和

如何修复 XSLT 3.0 地图问题?

XSLT 1.0 / 使用条件对每个结果进行排序