如何在 XSLT 中从包含“(?)”的值中添加不同的键?

How add distinct keys from values containing "(?)" in XSLT?

在我的 xsl 文件中,我创建了一个这样的索引:

  <xsl:key name="creators" match="dc:creator" use="."/>

然后迭代查找 dc:creator

的唯一值
  <xsl:for-each select="//dc:creator[generate-id() = generate-id(key('creators',.))]">
    <xsl:value-of select="."/>
  </xsl:for-each>

有趣的是,有两个不同的值,其中一个包含“(?)”,只有这个被发送到输出。例如。而不是 "Boznańska, Olga (1865-1940) (?)" 和 "Boznańska, Olga (1865-1940)" 我只得到 "Boznańska, Olga (1865-1940) (?)"。我的 xsltproc -version 给出

Using libxml 20901, libxslt 10128 and libexslt 817 
xsltproc was compiled against libxml 20902, 
libxslt 10128 and libexslt 817 libxslt 10128 was compiled against libxml 20902 
libexslt 817 was compiled against libxml 20902

(抱歉,这应该放在评论中,但它不适合,也许它会导致解决方案)

如果我尝试重现你的情况,使用How to create a Minimal, Complete, and Verifiable example,只能得出这样的结果:

输入XML::

<root xmlns:dc="dc">
    <dc:creator>Boznańska, Olga (1865-1940)</dc:creator>
    <dc:creator>Test1</dc:creator>
    <dc:creator>Test2</dc:creator>
    <dc:creator>Test2</dc:creator>
    <dc:creator>Boznańska, Olga (1865-1940) (?)</dc:creator>
    <dc:creator>Boznańska, Olga (1865-1940)</dc:creator>
    <dc:creator>Boznańska, Olga (1865-1940) (?)</dc:creator>
    <dc:creator>Boznańska, Olga (1865-1940) (?)</dc:creator>
    <dc:creator>Boznańska, Olga (1865-1940)</dc:creator>
</root>

XSLT 1.0 样式表:

<xsl:stylesheet version="1.0"
    xmlns:dc="dc"
    xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

    <xsl:key name="creators" match="dc:creator" use="."/>

    <xsl:template match="/">
        <xsl:for-each select="//dc:creator[generate-id() = generate-id(key('creators',.))]">
            <xsl:value-of select="."/>
            <xsl:text>&#xA;</xsl:text>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

XML(有点)输出:

<?xml version="1.0" encoding="utf-8"?>Boznańska, Olga (1865-1940)
Test1
Test2
Boznańska, Olga (1865-1940) (?)

换句话说,使用您提供的信息,"just works"。我尝试使用 Xalan、.NET、XsltProc(使用 libxsl),结果都相同(后者在 prolog 之后添加了一个不需要的额外白线)。

那么(这就是为什么这目前不是 真正的 答案),你能更新你的问题以给出你当前错误的可验证示例吗?