1

パイプラインで一連の xslt ステップを含む次のxprocコードを実行しようとしています。ただし、「href」リンクが明確に示されていますが、ひょうたんはソース ドキュメントを読み取ったり取得したりできません。

oXygen エディターで次のエラーが報告されます。

E [Calabash XProc] "ソース ドキュメントまたは初期テンプレートのいずれかを指定する必要があります"

コンソールからひょうたんを実行すると、次のエラーが表示されます。

May 07, 2013 2:41:52 PM com.xmlcalabash.util.DefaultXProcMessageListener エラー SEVERE: err:XD0011:XProc error err:XD0011 May 07, 2013 2:41:52 PM com.xmlcalabash.drivers.Main エラー SEVERE: それap:document 要素によって参照されるリソースが存在しない場合、アクセスできない場合、または整形式の XML ドキュメントではない場合、動的エラーになります。May 07, 2013 2:41:52 PM com.xmlcalabash.drivers.Main エラー SEVERE: 根本的な例外: net.sf.saxon.s9api.SaxonApiException: XML パーサー処理によって報告された I/O エラー C:stlConversionxprocstlxml.xpl: C :stlConversionx procstlxml.xpl (Das System kann die angegebene Datei nicht finden)

誰かがこのエラーで私を助けてくれますか?

私のxprocコードは次のとおりです。



<p:output port="result" sequence="true">  
    <p:pipe step="pre-run" port="result"/>
    <p:pipe step="normalize-stl-xml" port="result"/>
    <p:pipe step="tf-transform" port="result"/>
    <p:pipe step="transformARDOnline" port="result"/>
    <p:pipe step="filterUnusedStyleLayout" port="result"/>
</p:output>

<p:xslt name="pre-run">
    <p:input port="source">
        <p:document href="file:/C:/stlConversion/temp/a.xml"/>
    </p:input>
    <p:input port="stylesheet">  
        <p:document href="file:/C:/stlConversion/xslt/test.xsl"/> 
    </p:input>  
    <p:input port="parameters">  
        <p:empty/> 
    </p:input>
</p:xslt>

<p:xslt name="normalize-stl-xml">
    <p:input port="source">  
        <p:pipe step="pre-run" port="result"/>
    </p:input>  
    <p:input port="stylesheet">  
        <p:document href="file:/C:/stlConversion/xslt/normalize_stl_xml.xsl"/> 
    </p:input>  
    <p:input port="parameters">  
        <p:empty/> 
    </p:input>
</p:xslt>

<p:xslt name="tf-transform">
    <p:input port="source">  
        <p:pipe step="normalize-stl-xml" port="result"/>
    </p:input>  
    <p:input port="stylesheet">  
        <p:document href="file:/C:/stlConversion/xslt/tf_test_transform.xsl"/> 
    </p:input>  
    <p:input port="parameters">  
        <p:empty/> 
    </p:input>
</p:xslt>

<p:xslt name="transformARDOnline">
    <p:input port="source">  
        <p:pipe step="tf-transform" port="result"/>
    </p:input>  
    <p:input port="stylesheet">  
        <p:document href="file:/C:/stlConversion/xslt/transformARDOnline.xslt"/> 
    </p:input>  
    <p:input port="parameters">  
        <p:empty/> 
    </p:input>
</p:xslt>

<p:xslt name="filterUnusedStyleLayout">
    <p:input port="source">  
        <p:pipe step="transformARDOnline" port="result"/>
    </p:input>  
    <p:input port="stylesheet">  
        <p:document href="file:/C:/stlConversion/xslt/filterUnusedStyleLayout.xslt"/> 
    </p:input>  
    <p:input port="parameters">  
        <p:empty/> 
    </p:input>
</p:xslt>

<p:store href="file:/C:/stlConversion/ebu-tt_ard_online.xml" media-type="text/xml"/>

4

1 に答える 1

0

2 つの異なるエラー メッセージが発生しています。

ファイルが見つかりません..
後者は単に、Calabash が .xpl ファイル自体を読み取れないことを示しています。エラー メッセージには、ディレクトリ セパレータが不足しているように見えるファイル パスが記載されています。おそらく、Calabash への最初の呼び出しで問題が発生した可能性があります。

これは、.xpl の名前のスペルを間違えたときに表示されるエラー メッセージです。

D:\Projecten\Persoonlijk\XProc\stack8>calabash testt.xpl
mei 07, 2013 8:16:57 PM com.xmlcalabash.util.DefaultXProcMessageListener error
SEVERE: err:XD0011:XProc error err:XD0011
mei 07, 2013 8:16:57 PM com.xmlcalabash.drivers.Main error
SEVERE: It is a dynamic error if the resource referenced by a p:document element does not exist, cannot be accessed, or is not a well-formed XML document.
mei 07, 2013 8:16:57 PM com.xmlcalabash.drivers.Main error
SEVERE: Underlying exception: net.sf.saxon.s9api.SaxonApiException: I/O error reported by XML parser processing file:/D:/Projecten/Persoonlijk/XProc/stack8/test
t.xpl: D:\Projecten\Persoonlijk\XProc\stack8\testt.xpl (The system cannot find the file specified)

ソース ドキュメントを指定する必要があります
が、最初のメッセージは少し誤解を招きます。入力を入力ポートにバインドするのを忘れたように聞こえますが、そうではありません。実際には、p:xsltステップの 1 つが入力を受け取っておらず、空のドキュメント ノードでさえ受け取っていないことを示しています。

以下に示すように、ステップの前にap:sinkと aを追加することで、エラーを再現できました。p:identityp:xslt

<p:declare-step name="main" xmlns:p="http://www.w3.org/ns/xproc"
  xmlns:c="http://www.w3.org/ns/xproc-step" version="1.0">

    <p:input port="source" primary="true" sequence="true">
        <p:document href="temp/a.xml"/>
    </p:input>
    <p:input port="schema" sequence="true"/>
    <p:input port="stylesheet" sequence="true"/>
    <p:input port="parameters" sequence="true" kind="parameter"/>

    <p:output port="result" sequence="true">  
        <p:pipe step="pre-run" port="result"/>
        <p:pipe step="normalize-stl-xml" port="result"/>
        <p:pipe step="tf-transform" port="result"/>
        <p:pipe step="transformARDOnline" port="result"/>
        <p:pipe step="filterUnusedStyleLayout" port="result"/>
    </p:output>

    <p:xslt name="pre-run">
        <p:input port="stylesheet">  
            <p:document href="xslt/test.xsl"/> 
        </p:input>  
    </p:xslt>

    <p:sink/>
    <p:identity>
        <p:input port="source">
            <p:empty/>
        </p:input>
    </p:identity>

    <p:xslt name="normalize-stl-xml">
        <p:input port="stylesheet">  
            <p:document href="xslt/normalize_stl_xml.xsl"/> 
        </p:input>  
    </p:xslt>

    <p:xslt name="tf-transform">
        <p:input port="stylesheet">  
            <p:document href="xslt/tf_test_transform.xsl"/> 
        </p:input>  
    </p:xslt>

    <p:xslt name="transformARDOnline">
        <p:input port="stylesheet">  
            <p:document href="xslt/transformARDOnline.xslt"/> 
        </p:input>  
    </p:xslt>

    <p:xslt name="filterUnusedStyleLayout">
        <p:input port="stylesheet">  
            <p:document href="xslt/filterUnusedStyleLayout.xslt"/> 
        </p:input>  
    </p:xslt>

    <p:store href="ebu-tt_ard_online.xml" media-type="text/xml"/>

</p:declare-step>

コメントで述べたように、入力宣言も追加しました。ソース入力をプライマリに変更しました。プライマリ入力と出力は自動的にバインドされるため、上記のコードからわかるように、すべての入力ソース宣言を省略できます。同じように、自動的にバインドされる型パラメーターの入力も考慮されます。これらを省略すると、コマンドライン パラメータが自動的に渡されp:xsltます。

正確な答えではありませんが、問題に近づくのに役立つことを願っています。あなたのコードは、実際の入力と xslt がなくてもわかる限り、Calabash 0.9.40 と 1.0.9-94 の両方で問題なく動作します。

チッ!

于 2013-05-07T18:21:14.233 に答える