根据旧闪米特语的字母对单词进行排序

时间:2018-01-24 00:05:19

标签: sorting xslt saxon xslt-3.0

我使用XSLT 3.0,Saxon-PE 9.7。

我需要根据Ugaritic语言对orth进行排序,接近希伯来语,但附加字符。

我试过了:

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

但建议的订单不正确。所以我想我需要描述Ugaritic字母顺序。我能怎么做?

事先,非常感谢你。

2 个答案:

答案 0 :(得分: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的{​​{1}}属性中使用的排序规则的名称:

xsl:sort

<xsl:perform-sort select="$input-seq"> <xsl:sort select="string()" collation="http://example.com/uga-trans"/> </xsl:perform-sort> 属性中使用的语法是为Java类rules https://docs.oracle.com/javase/7/docs/api/java/text/RuleBasedCollator.html定义的语法,它有一个挪威语的例子。唯一需要注意的是,Java语法是纯文本,而Saxon配置是XML,因此定义排序的RuleBasedCollator必须在<属性中转义为rules

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

您可以使用&lt;从命令行运行Saxon以使用此类配置,oXygen在Saxon特定转换方案对话框中有一个字段来选择配置文件。

答案 1 :(得分:-1)

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

您要搜索的代码是:

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

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