Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XSLT:带法语字母的有序列表_Xml_Xslt - Fatal编程技术网

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

Xml XSLT:带法语字母的有序列表,xml,xslt,Xml,Xslt,我从另一个关于如何创建有序列表()的帖子中得到了灵感,答案来自@Mads Hansen。我希望做同样的事情,但包括法国口音的字符。它们现在显示在输出文档的最末尾 这是输入的一部分: <?xml version="1.0" encoding="utf-8"?> <div type="paragraphe"> <w lemma="aprés">aprés</w> <w lemma="chevalier">cheual

我从另一个关于如何创建有序列表()的帖子中得到了灵感,答案来自@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>

四月
切里尔
A.
埃斯巴赫人
克洛斯
这是从另一篇文章中修改的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>
    
    
    
  • 四月-四月
  • 骑士-骑士
  • clore-clos
  • a-a
  • 埃巴伊尔-埃斯巴伊斯
  • 如何使列表按法语重音字母排序: a(a)bcde(èè)fghi(î)jklmno(ô)pqrstu(ùèè)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>
    
    
    
  • a-a
  • 四月-四月
  • 骑士-骑士
  • clore-clos
  • 埃巴伊尔-埃斯巴伊斯
  • 我希望我说清楚了,否则请不要犹豫

    谢谢你的帮助或建议。
    /Micha

    使用
    选择适合法语的排序规则(排序顺序)。没有绝对保证XSLT处理器会做正确的事情(或者做您想做的事情,这可能会有所不同),但是对于流行的处理器,这是一个相当好的机会。

    请一次只问一个问题。对于您的第一个问题,请提供一个可复制的问题示例-请参阅:另外,您的输入不是格式良好的XML(再次!)。非常感谢您对其工作原理的解释,我已经阅读了链接上的文本并修改了我的代码,使其最小、可复制且格式良好。您使用的是哪种XSLT处理器?您好,对不起,直到今天我才看到你的评论。我使用的是Saxon HE 9.5.1.2。那么,您应该将样式表标记为2.0版。我将删除我的答案,因为它显然与您的情况无关。事实如下:Xalan和Saxon 6.5都将“á”排序在“a”之后和“b”之前,即使没有添加
    lang=“fr”
    。哦,libxslt忽略了
    lang
    属性,并将它们排序为“a”、“b”、“á”。非常感谢!这是非常有益的,我学到了越来越多的感谢大家!我希望有一天我能帮上忙:)