我試圖將我的批處理文件調用薩克森(版本8.9)到XProc管道(葫蘆)。 這是我批調用:XSLT與XProc - 參數綁定在所需的類型
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的tem類型的值是document-node();提供的值有項目類型爲xs:字符串
我知道<p:exec>
一步,但我不想使用它,因爲在配置文件中應當由其他XSLT tranformations後產生。它也應該被其他XProc步驟重用。
是否有可能使用正確的參數類型調用XSLT樣式表? 感謝您的幫助!
謝謝,這給了我確定性。我認爲,但我錯過了你鏈接的這條線。 是的,執行順序是其中一個問題,我拒絕了p:exec步驟。那麼我認爲我可以在自己宣佈的步驟中強制執行這個命令。但這不是一個好的解決方案。 雖然,感謝您的幫助! –
我遇到同樣的問題。我的XSLT接收2個xml文件,一個用於主輸入,另一個用於參數。第二個也是由XProc中的另一個XSLT自動生成的。現在,唯一的解決方法是通過p:store在XProc中臨時生成第二個文件,將此臨時文件的URL傳遞給XSLT,並在整個管道完成後刪除它。 – chansey
@chansey我很確定你可以聚合來自兩個來源的輸入,並將它們作爲一個輸入文檔輸入到第二個XSLT步驟。從磁盤寫入和讀取不保證是順序的或同步的。也許發表一個關於這個新問題? – grtjn