XSLT:带有法语字母的有序列表

时间:2015-10-17 22:14:20

标签: xml xslt

我从另一个关于如何创建有序列表(XSLT 1.0 - Create a Unique, Ordered List)和@Mads Hansen答案的线索中获得灵感。我希望做同样的事情,但包括法国人强调的角色。它们现在出现在输出文档的最后。

这是输入的一部分:

    <?xml version="1.0" encoding="utf-8"?>
<div type="paragraphe">
    <w lemma="aprés">aprés</w>
    <w lemma="chevalier">cheualier</w>
    <w lemma="à">a</w>
    <w lemma="ébahir">esbahis</w>
    <w lemma="clore">clos</w>
</div>

这是从其他帖子修改的xslt:

    <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
    version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" encoding="UTF-8" indent="yes"/>

    <xsl:key name="lemma-word" match="//w" use="concat(@lemma, ' - ', .)" />

    <xsl:template match="/">

        <xsl:for-each select="//w[generate-id()
            = generate-id(key('lemma-word',concat(@lemma, ' - ', .))[1])]">
            <xsl:sort select="@lemma"/>
            <xsl:sort select="//w"/>
            <li>
                <xsl:value-of select="concat(@lemma, ' - ', .)"/>
            </li>
        </xsl:for-each>

    </xsl:template>

</xsl:stylesheet>

输出:

<?xml version="1.0" encoding="UTF-8"?>
<li>aprés - aprés</li>
<li>chevalier - cheualier</li>
<li>clore - clos</li>
<li>à - a</li>
<li>ébahir - esbahis</li>

我怎样才能使用法语重点字母订购列表: A(AA)BCDE(EEE)FGHI(I)jklmno(O)pqrstu(UU)VWXYZ

强调的字母不能像现在那样出现在输出的末尾,而是出现在非强调字母旁边(就好像它们没有被强调一样)。

输出中的所需顺序:

<?xml version="1.0" encoding="UTF-8"?>
<li>à - a</li>
<li>aprés - aprés</li>
<li>chevalier - cheualier</li>
<li>clore - clos</li>
<li>ébahir - esbahis</li>

我希望自己明确表示,否则请不要犹豫。

感谢您的帮助或建议。 / Micha

1 个答案:

答案 0 :(得分:0)

使用<xsl:sort select="@lemma" lang="fr"/>选择适合法语的排序规则(排序顺序)。没有绝对的保证你的XSLT处理器会做正确的事情(或做你想做的事情,可能会有所不同),但对于流行的处理器来说,这是一个相当不错的机会。