1

我有一个 XSL 样式表,它在给定的语言环境中格式化日期。当我从 Oxygen 运行样式表时,输出如预期的那样是德语。当我对 saxon9he 或 xproc 使用命令行时,输出为英文。我想用德语代替。

源(任何源文件都可以)source.xml

<?xml version="1.0" encoding="UTF-8"?>
<root/>

XSL 文件transformation.xsl

<xsl:stylesheet version="2.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/">
    <foo>
      <xsl:value-of select="format-date(current-date(),'[FNn]','de',(),())"/>
    </foo>
  </xsl:template>
</xsl:stylesheet> 

和 XProc 文件 ( showdate.xpl):

<?xml version="1.0" encoding="UTF-8"?>
<p:declare-step xmlns:p="http://www.w3.org/ns/xproc"
  xmlns:c="http://www.w3.org/ns/xproc-step" version="1.0">

  <p:input port="source" sequence="false">
    <p:document href="source.xml"/>
  </p:input> 

  <p:output port="result" sequence="true">
    <p:empty/>
  </p:output> 

  <p:xslt> 
    <p:input port="stylesheet"> 
      <p:document href="transformation.xsl"/> 
    </p:input> 
    <p:input port="parameters">
      <p:empty/>
    </p:input>
  </p:xslt>

  <p:store href="out.xml"/>
</p:declare-step>

这就是我从 Mac 终端运行 xproc 文件的方式:

export CLASSPATH=...../lib/calabash.jar:....../lib/saxon9he.jar
java com.xmlcalabash.drivers.Main showdate.xpl

结果是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<foo>[Language: en]Thursday</foo>

而我想拥有

<?xml version="1.0" encoding="UTF-8"?>
<foo>Donnerstag</foo>

如何使用 xproc/calabash 获得我想要的结果?

4

1 回答 1

0

@topskip 是正确的。Oxygen 使用 Saxon EE,它带有对多种语言的本地化支持(Saxon PE 也是如此)。

Saxon HE(Calabash 默认使用)不提供开箱即用的本地化支持,因此是英文输出。然而,话虽如此,显然还有一种方法可以在 Saxon HE 中配置本地化 - 请参阅Saxon 文档

于 2014-02-07T15:21:57.933 回答