Sorting 根据古闪族语言的字母排列单词
我使用XSLT3.0,萨克森PE9.7 我需要根据乌加里特语对Sorting 根据古闪族语言的字母排列单词,sorting,xslt,saxon,xslt-3.0,Sorting,Xslt,Saxon,Xslt 3.0,我使用XSLT3.0,萨克森PE9.7 我需要根据乌加里特语对orth进行排序,接近希伯来语,但带有附加字符 我试过: <xsl:sort select="orth" data-type="text" order="ascending" lang="uga"/> 但提议的命令是不正确的。所以我想我需要描述一下乌加里特语的字母顺序。我该怎么办 提前,非常感谢。我不确定这是否是最好的解决方案,但这是我知道的 您正在搜索的代码是: <xsl:sort select
orth
进行排序,接近希伯来语,但带有附加字符
我试过:
<xsl:sort select="orth" data-type="text" order="ascending" lang="uga"/>
但提议的命令是不正确的。所以我想我需要描述一下乌加里特语的字母顺序。我该怎么办
提前,非常感谢。我不确定这是否是最好的解决方案,但这是我知道的 您正在搜索的代码是:
<xsl:sort select="((orth='character1') * 1) + ((orth='character2') * 2) + ((orth='character3') * 3) ..." data-type="text" order="ascending"/>
您需要对字母表中的每个字符执行此操作。乘法越低,结果中出现的时间越早。基本上,您是在为指定的值定义自己的顺序。Saxon允许您在其配置文件中定义自己的排序规则,您基本上必须设置一个配置文件,其中包含如下部分
<collations>
<collation uri="http://example.com/uga-trans"
rules="< ʾa < b < g < ḫ < d < h < w < z < ḥ < ṭ < y < k < š < l < m < ḏ < n < ẓ < s < ʿ < p < ṣ < q < r < ṯ < ġ < t < ʾi < ʾu < s2"/>
</collations>
rules
属性中使用的语法是为Java类rulebasedcolator
定义的语法,这里有一个挪威语的示例。唯一需要注意的是,Java语法是纯文本,而Saxon配置是XML,因此我认为Saxon 9.7文档中的部分是相关的。谢谢@Martin。我试图查看CollationURIResolver
。我想你说的是startsWith
(.我测试了一个字母(
),但它不起作用。我认为您还不了解该配置是关于什么的,您需要在实现Java.util.Comparator或Saxon配置文件的Java类中声明您的排序规则。完成后,您可以使用collation
属性xsl:sort
,例如collation="http://saxon.sf.net/collation?class=yourFullClassHere“
,select
属性将保留为select=“orth"
。因此,这项任务将在XSLT代码之外通过编写该字母表的排序规则来解决。那么,哪些字符构成了该语言,是吗?这些字符不是按Unicode代码点排序的吗?谢谢@Martin。关于Ugaritic,我使用的是转录,而不是楔形符号。关于Saxon链接,对不起如果我不懂,这对新手来说并不容易,尤其是当英语不是第一语言时。我确实看了看,但这对我来说太复杂了。我不知道java
。在XSLT
中没有其他方法可以做到这一点?谢谢@Christian。我试过了,但我有以下信息没有为类型(xs:boolean,xs:integer)的参数定义算术运算符。"因此,我试图定义参数:
,并用替换,但它也不起作用。这不是正确的方法。我将亲自回来回答这个问题,但正确的方法是要么在ICU库中找到做这项工作的正确排序规则,要么实现一个新的排序规则是的。可能有必要使用xsl:sort的collation参数而不是lang参数。Michael可能是对的。正如我所写的,我非常确定有更好的解决方案。这对我获得字母表的自己排序的任务很有用。非常感谢@Martin!对于新手(我也是这样)来说,只是一些额外的信息:特别是对于那些使用Oxygen 19.1的人,配置文件名为“Saxon configuration.xml”。默认设置为Edition=EE
。由于我使用的是Saxon PE,所以我改为Edition=PE
。之后,在transformation editor场景中,我添加了可以从“Transformer”窗口添加的配置文件(上述“参数”)。然后在xslt文件中:
感谢Martin的回答。我只想添加一些观察结果,主要是为了稍后来到这里的其他人。Saxon实际上为您提供了两种选择Ugaritic排序规则的方法:在xsl:sort
上,您可以指定lang='uga'
或'collation=''。目前,第一种方法选择Ugaritic的JDK语言环境,而第二个选择ICU-J版本。我不知道它们是否不同。但是,这两个版本当然都不能处理音译输入。
<xsl:perform-sort select="$input-seq">
<xsl:sort select="string()" collation="http://example.com/uga-trans"/>
</xsl:perform-sort>