我有这些数据集,我想删除一些特定的值。该方法删除了我想要的内容,但也删除了一些其他值。
<Address>
<Row>
<LD>Dwelling place</LD>
<LN>Dwelling (Part Of)</LN>
</Row>
<Row>
<LD>jarkatar</LD>
<LN>Edmund's Home</LN>
</Row>
</Address>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:Aa="Aa:Aa">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<Aa:LNDeletes>
<del>(Part Of)</del>
<Aa:LNDeletes>
<xsl:variable name="vLocNameDels" select="document('')/*/Aa:LNDeletes/*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="LN/text()">
<xsl:call-template name="makeDeletes">
<xsl:with-param name="pDeletes" select="$vLocNameDels"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="makeDeletes">
<xsl:param name="pText" select="."/>
<xsl:param name="pDeletes"/>
<xsl:variable name="vDelText" select="$pDeletes[contains($pText, .)][1]"/>
<xsl:if test="$vDelText">
<xsl:variable name="vRough">
<xsl:value-of select="substring-before($pText, $vDelText)"/>
<xsl:value-of select="substring-after($pText, $vDelText)"/>
</xsl:variable>
<xsl:value-of select="normalize-space($vRough)"/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
用上面的代码我得到了这个
<Address>
<Row>
<LD>Dwelling place</LD>
<LN>Dwelling</LN>
</Row>
<Row>
<LD>jarkatar</LD>
<LN></LN>
</Row>
而不是这个
<Address>
<Row>
<LD>Dwelling place</LD>
<LN>Dwelling</LN>
</Row>
<Row>
<LD>jarkatar </LD>
<LN>Edmund's Home</LN>
</Row>
删除的代码
- (部分)这是我想要的
- 埃德蒙的家,本不应被删除