我正在尝试处理这个XML文件,我想根据最新的节点值删除所有匹配的节点。在以下示例中,最新节点值为“${DELETE}”,最新节点值将始终为“${DELETE}”,并且该节点将始终位于XML文件的底部。
示例:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<projects>
<project id="properties1">
<property name="prop1">some-value</property>
<property name="prop2">abc</property>
<property name="prop3">def</property>
</project>
<project id="properties2">
<property name="prop">testing prop from pom.xml</property>
<property name="prop1">${DELETE}</property>
<property name="prop4">abc</property>
<property name="prop5">xyz</property>
</project>
</projects>
预期产出为:
<projects>
<project id="properties1">
<property name="prop2">abc</property>
<property name="prop3">def</property>
</project>
<project id="properties2">
<property name="prop">testing prop from pom.xml</property>
<property name="prop4">abc</property>
<property name="prop5">xyz</property>
</project>
</projects>
通过XSLT2.0和XSLT2.0处理器,您可以使用
<xsl:stylesheet version="2.0" exclude-result-prefixes="xs"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:key name="prop" match="property" use="@name"/>
<xsl:variable name="prop-to-delete" select="/projects/project[last()]/property[. = '${DELETE}']/@name"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="key('prop', $prop-to-delete)"/>
</xsl:stylesheet>
在XSLT 1.0中,不能使用变量引用或路径作为匹配模式中的关键参数,因此必须详细说明以下条件:
<xsl:stylesheet version="1.0" exclude-result-prefixes="xs"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="property[@name = /projects/project[last()]/property[. = '${DELETE}']/@name]"/>
</xsl:stylesheet>
我的目标是在StatusDate为1900-01-01T00:00:00时使用此XSLT样式表删除整个LoanSecondaryStatus节点,但在其他日期时保留该节点。 我有以下XML: 这是我用来尝试删除Loan二级状态节点的XSLT:
输入: 如何删除列顺序中没有值的记录? 期望输出: 我当前的XSL只删除空节点 我似乎无法掌握模板匹配来删除整个“记录”标签。。。非常感谢你!
我想通过像delete*这样的查询删除整个节点,其中user_id=“-KTruPWrYO9WFj-TF8Ft”如何在firebase上实现?
在本章中,我们将学习XML DOM删除节点的操作。删除节点操作是指从文档中删除指定的节点。实现此操作以移除诸如文本节点,元素节点或属性节点之类的节点。 以下是用于删除节点操作的方法 - 方法 方法 1. removeChild()方法 方法从子列表中删除指示的子节点,并将其返回。 删除子节点等同于删除文本节点。 因此,删除子节点会删除与其关联的文本节点。 语法 使用方法的语法如下 - 其中, -
我使用的是XSL1.0版本,例如,我有这样的xml node1 node2 我试过这个代码,但没有结果。任何建议都会有帮助的谢谢你