XSL 使用变音符号建立索引并删除定冠词

XSL Setting up an Index with Umlaut and removing definite article

正如我在上一个问题中提到的,我需要设置从 T.E.I 到 XeLaTex 的 XSLT。我未能解决的一个问题是如何处理变音符号和定冠词 "the"。假设我想将 "The beauty queen" 放入索引中,在德语中它将是 "Die Schönheitskönigin"。 所需的输出以排序顺序开始,然后写入索引中显示的内容:

\index{Schoenheitskoenigin@Die Schönheitskönigin}

因此德语变音符号应替换为 "ae"、"oe"、"ue"、“ß”替换为 "ss" 以及冠词 "der"、"die", "das" 应该从排序部分去掉。

我使用 XSLT 2.0 并进行查找以获取索引条目。使用下面提供的解决方案可以产生正确的输出:

    <xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="utf-8"/>

<xsl:param name="persons" select="document('person.xml')"/>

<xsl:key name="person-lookup" match="row" use="number"/>

<xsl:template match="persName">
<xsl:variable name="s1" select="key('person-lookup', @key, $persons)/name"/>
    <xsl:value-of select="."/>
    <xsl:text>\index{</xsl:text>
 <xsl:value-of select="replace(replace(replace(replace(replace(replace(replace(replace($s1,'ä','ae'), 'ö', 'oe'), 'ü', 'ue'), 'ß', 'ss'), 'Ä', 'Ae'), 'Ü', 'Ue'), 'Ö', 'Oe')'^(Die |Der |Das )', '')"/>
             <xsl:text>@</xsl:text>
        <xsl:value-of select=""/>
        <xsl:text>}</xsl:text>
    </xsl:template>

    </xsl:stylesheet>

其中 person.xml 是:

   <?xml version="1.0" encoding="UTF-8"?>
<root>
    <row>
        <number>A01</number>
        <name>Die Schönheitskönigin Ilse</name>
    </row>
</root>

main.xml 类似于:

<?xml version="1.0" encoding="UTF-8"?>
  <persName key="A01>Ilse</persName> hatte einen schlechten Tag.

要从输入中删除领先的权威文章,您可以使用:

<xsl:value-of select="replace($input, '^(Die |Der |Das )', '')" />

也对变音字符使用 replace() 函数。