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

Xml Xpath获取具有不同值的节点(删除尾随空格和前导空格),xml,xslt,xpath,xalan,Xml,Xslt,Xpath,Xalan,我有一个XML文档,在该文档中,我试图选择具有不同值的节点,删除前导和尾随空格 我正在使用以下Xpath,它正在工作: ROW[COUNTRY[not(text() = following::ROW/COUNTRY[text()])]] 但是当我在上面的xpath中使用normalizespace(text())时,返回的结果是不正确的 XML: <?xml version="1.0" encoding="UTF-8"?> <ROOT> <ROW>

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

我正在使用以下
Xpath
,它正在工作:

ROW[COUNTRY[not(text() = following::ROW/COUNTRY[text()])]]
但是当我在上面的
xpath
中使用
normalizespace(text())
时,返回的结果是不正确的

XML:

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <ROW>
        <COUNTRY>
            <![CDATA[USA]]>
        </COUNTRY>
        </ROW>
    <ROW>
        <COUNTRY>
            <![CDATA[ USA]]>
        </COUNTRY>
    </ROW>
</ROOT>
<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>

XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
    <ROW>
        <COUNTRY>
            <![CDATA[USA]]>
        </COUNTRY>
        </ROW>
    <ROW>
        <COUNTRY>
            <![CDATA[ USA]]>
        </COUNTRY>
    </ROW>
</ROOT>
<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>

使用明钦语分组:

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

您应该在这个问题的实际文本中包含使用的XML和XSL,而不是链接到它。如果链接停止运行,这将使这个问题和答案在将来更有价值。