2

我使用 XSLT 3.0、Saxon-PE 9.7。

我需要orth根据乌加里特语进行排序,接近希伯来语但有额外的字符。

我努力了:

 <xsl:sort select="orth" data-type="text" order="ascending" lang="uga"/>

但是建议的顺序是不正确的。所以我想我需要描述一下乌加里特字母顺序。我能怎么做?

在此先感谢您。

4

2 回答 2

1

Saxon 允许您在其配置文件中定义自己的排序规则,您基本上必须设置一个配置文件,其中包含类似的部分

 <collations>
      <collation uri="http://example.com/uga-trans"
      rules="&lt; ʾa &lt; b &lt; g &lt; ḫ &lt; d &lt; h &lt; w &lt; z &lt; ḥ &lt; ṭ &lt; y &lt; k &lt; š &lt; l &lt; m &lt; ḏ &lt; n &lt; ẓ &lt; s &lt; ʿ &lt; p &lt; ṣ &lt; q &lt; r &lt; ṯ &lt; ġ &lt; t &lt; ʾi &lt; ʾu &lt; s2"/>
 </collations>

其中uri属性将 URI 定义为排序规则的名称,然后您可以在 的collation属性中使用xsl:sort

            <xsl:perform-sort select="$input-seq">
                <xsl:sort select="string()" collation="http://example.com/uga-trans"/>
            </xsl:perform-sort> 

属性中使用的语法rules是为 Java 类定义的语法RuleBasedCollator https://docs.oracle.com/javase/7/docs/api/java/text/RuleBasedCollat​​or.html,它有一个挪威语的例子。唯一需要注意的是,Java 语法是纯文本,而 Saxon 配置是 XML,因此<定义排序必须在rules属性中转义为&lt;.

我已经根据维基百科文章https://en.wikipedia.org/wiki/Ugaritic_alphabet中提供的转录序列设置了一个规则。我不确定这是否是你要找的那个。

您可以从命令行运行 Saxon-config:yourconfiguationfile.xml以使用这样的配置,oXygen 在 Saxon 特定转换场景对话框中有一个字段来选择配置文件。

于 2018-01-25T09:38:53.373 回答
-1

我不确定这是否是最好的解决方案,但这就是我所知道的。

您正在搜索的代码是:

      <xsl:sort select="((orth='character1') * 1) + ((orth='character2') * 2) + ((orth='character3') * 3) ..." data-type="text" order="ascending"/>

您需要对字母表的每个字符执行此操作。乘法越低,它出现在结果中的时间就越早。基本上,您正在为指定值定义自己的顺序。

于 2018-01-24T12:55:07.820 回答