我有这个xml:
<Elements>
<tag1>
<ID>title</ID>
<EventDescription>description</EventDescription>
<ContentDuration>01:30:35:02</ContentDuration>
<Format>format</Format>
<Segment1>10:00:00:00-10:10:46:02</Segment1>
<Segment2>10:10:46:08-10:22:31:13</Segment2>
<Segment3>-</Segment3>
<Segment4>-</Segment4>
<Segment5>-</Segment5>
<Segment6>-</Segment6>
</tag1>
</Elements>
我想排除只包含字符串“ - ”的元素 结果应该是这样的
<Elements>
<tag1>
<ID>title</ID>
<EventDescription>description</EventDescription>
<ContentDuration>01:30:35:02</ContentDuration>
<Format>format</Format>
<Segment1>10:00:00:00-10:10:46:02</Segment1>
<Segment2>10:10:46:08-10:22:31:13</Segment2>
</tag1>
</Elements>
答案 0 :(得分:2)
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
然后添加模板以匹配和排除文本等于&#34; - &#34;
的元素 <xsl:template match="*[text() = '-']" />
试试这个XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="*[text() = '-']" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
编辑:在回复LarsH的评论时,如果你确实有一个你想要删除的<Segment3>-<a /></Segment3>
节点,请尝试将模板更改为:
<xsl:template match="*[not(*) and text() = '-']" />