Saxon ベースの xslt 変換で照合を使用したいと考えています。ソースファイル:
<root>
<entry name="B" />
<entry name="Aa" />
<entry name="Ä" />
<entry name="Az" />
</root>
そして私の変換:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:saxon="http://saxon.sf.net/">
<xsl:output indent="yes"/>
<saxon:collation name="german" lang="de-DE"/>
<xsl:template match="root">
<root>
<xsl:for-each select="entry">
<xsl:sort select="@name" collation="german"/>
<sorted entry="{@name}"/>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>
これは Oxygen でほぼ問題なく動作し、出力は次のようになります。
<root xmlns:saxon="http://saxon.sf.net/">
<sorted entry="Ä"/>
<sorted entry="Aa"/>
<sorted entry="Az"/>
<sorted entry="B"/>
</root>
(Ä は 2 番目のエントリである必要がありますが、それは別の質問だと思います)
しかし、コマンド ラインを使用すると、エラーが発生します。
java -jar saxon9he.jar -s:source.xml -o:out.xml -xsl:transformation.xsl
XTDE1035: Collation file:/Users/<mypath>/german has not been defined
Failed to compile stylesheet. 1 error detected.
saxon がgerman
ファイルとして使用したいようです。それは存在しない。
問題は、このスタイルシートをコマンド ラインでどのように使用するかです。
適切であれば、「Ä」を 2 つの「A」の間でソートする方法も尋ねます。エントリですが、別の質問でこれを尋ねることができます。