我有一个XML文档,其中我试图选择具有不同值的节点,其中删除了前导和尾随空格。
我正在使用关注Xpath
并且它正在运行:
ROW[COUNTRY[not(text() = following::ROW/COUNTRY[text()])]]
但是当我在normalize-space(text())
上方使用xpath
时,返回的结果不正确。
XML:
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<ROW>
<COUNTRY>
<![CDATA[USA]]>
</COUNTRY>
</ROW>
<ROW>
<COUNTRY>
<![CDATA[ USA]]>
</COUNTRY>
</ROW>
</ROOT>
XSLT:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" />
<xsl:template match="@*|node()">
<xsl:apply-templates select="@*|node()" />
</xsl:template>
<xsl:template match="ROW[COUNTRY[not(normalize-space(text()) = following::ROW/COUNTRY[normalize-space(text())])]]">
<tr>
<xsl:value-of select="normalize-space(./COUNTRY)"></xsl:value-of>
</tr>
</xsl:template>
</xsl:transform>
答案 0 :(得分:3)
使用Muenchian分组:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" />
<xsl:key name="group" match="ROW" use="normalize-space(COUNTRY)"/>
<xsl:template match="@*|node()">
<xsl:apply-templates select="@*|node()" />
</xsl:template>
<xsl:template match="ROW[generate-id() = generate-id(key('group', normalize-space(COUNTRY))[1])]">
<tr>
<xsl:value-of select="normalize-space(./COUNTRY)"></xsl:value-of>
</tr>
</xsl:template>
</xsl:transform>