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



正如我在前面的问题中提到的,我需要设置一个从T.E.I到XeLaTex的XSLT。我没能解决的一个问题是如何处理元音变音符和定冠词"the"。如果我想把"选美皇后"列入索引,在德语中应该是"Die Schönheitskönigin"。所需的输出从排序顺序开始,然后写入索引中显示的内容:

index{Schoenheitskoenigin@Die Schönheitskönigin}

因此,德语元音变为"ae"、"oe"、"ue"、"ß"one_answers"ss",并且应该从排序部分删除冠词"der"、"die"或"das"。

我使用XSLT2.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="$1"/>
        <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()函数。

最新更新