2

Saxon (バージョン 8.9) を呼び出すバッチ ファイルを XProc パイプライン (Calabash) に変換しようとしています。これは私のバッチ呼び出しです:

java -jar saxon8.jar -o out.xml in.xml style.xsl +config=config-file.cfg

パラメーター構成は、スタイルシートで次のように定義されます。

<xsl:param name="config" as="document-node()"/>

XProc 部分は次のようになります。

<p:load name="configLoad">
    <p:with-option name="href" select="'config-file.cfg'"/>
</p:load>
<p:xslt name="config">
    <p:input port="source">
        <p:document href="in.xml"/>
    </p:input>
    <p:input port="parameters">
        <p:inline>
            <c:param name="config">
                <p:pipe port="result" step="configLoad"/>
            </c:param>
        </p:inline>
    </p:input>
    <p:input port="stylesheet">
        <p:document href="style.xsl"/>
    </p:input>
</p:xslt>

エラーメッセージは次のとおりです。

変数 $config の値の必須項目タイプは document-node(); です。指定された値の項目タイプは xs:string です

ステップは知って<p:exec>いますが、後で他の XSLT 変換によって構成ファイルが生成されるため、使用したくありません。また、他の XProc ステップでも再利用されます。

正しいパラメータ型で XSLT スタイルシートを呼び出す可能性はありますか? ご協力いただきありがとうございます!

4

2 に答える 2

2

現在の XProc 標準では運が悪いようです。パラメーターは名前と値のペアであり、値のデータ型はuntypedAtomic の文字列である必要があると述べています。理由は聞かないで..

http://www.w3.org/TR/xproc/#parameters

構成の内容を動的に構成するのではなく、単に固定ファイルの内容を渡すだけの場合は、適切な構成ファイルへのパスのみを渡し、 fn:doc() を使用して構成ファイル内から読み取ることができます。 XSLT ファイル。

その場で構成ファイルを作成することはお勧めしません。XProc 内の実行順序は、期待どおりに連続していない場合があります。

代わりに、各構成設定を個別のパラメーターとして渡すこともできますが、各設定はフラットなパラメーター値の型に準拠する必要があります。

チッ!

于 2013-07-25T19:16:23.673 に答える