Xpath 获取具有不同值的节点(删除尾随空格和前导空格)

Xpath to get nodes with distinct values(removing trailing and leading spaces)

我有一个 XML 文档,我试图在其中 select 具有不同值的节点删除了前导和尾随空格。

我正在使用以下 Xpath 并且它正在运行:

ROW[COUNTRY[not(text() = following::ROW/COUNTRY[text()])]]

但是当我在上面 xpath 中使用 normalize-space(text()) 时,返回的结果不正确。

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>

使用 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>