亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

讓 Saxon 在從 Java 運行時生成新的結果文檔

讓 Saxon 在從 Java 運行時生成新的結果文檔

料青山看我應如是 2022-08-17 15:54:01
我正在嘗試從java運行Saxon HE,使用可以在Saxon資源中找到的代碼。我嘗試更改它,以便它不會從java代碼創建附加文件,而是讓xslt文件通過使用“結果文檔”來執行此操作。我的xslt確實在Altova XMLSpy中按預期工作,但我想看看我是否可以讓Saxon做同樣的事情 - 沒有運氣,除了巨大的頭部疼痛和大量的挫折感,以及很多希望Python在不久的將來會得到支持......我收到以下錯誤消息:主體輸出文件的系統標識符未知。當我谷歌搜索它時,我發現一個答案,即找不到基礎uri,但無處可見如何設置基礎uri...所以我的第一個問題是:基礎uri集在哪里?它是在 java 類中還是在 xslt 文件中?我無法看到在xslt文件中設置它的位置,所以我的猜測是我必須將其設置為編譯器/轉換器的屬性?A其他問題是關于結果文檔的實際 href 屬性。如果我想指向相對路徑,語法是什么,也許一個例子會是什么樣子?那么絕對路徑呢?在Altova中工作的文件中,我以某種方式獲取要轉換的源xml文件的基uri,然后將輸出定向到相對目錄。在 Saxon 中,base uri 似乎獲取了 xslt 文件的位置...不知道為什么會這樣。設置絕對路徑時,我收到一個錯誤,指出我正在使用未知協議。所以我在路徑之前輸入了“file:///”?,F在,我收到一條警告,抱怨文檔在連接xslt文件路徑的路徑上不可用,以及我在轉換期間使用的查找路徑。如您所見,我在這里到處都是,因此非常感謝一些指南和幫助。
查看完整描述

1 回答

?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

有兩個用于運行 Saxon 轉換的 API,您還沒有說出您正在使用哪個 API。

無論哪種方式,xsl:result-document 的 href 屬性中使用的相對 URI 都會相對于轉換的“基本輸出 URI”進行解析。

如果您使用的是 JAXP 轉換 API,則它是為 XSLT 1.0 設計的,XSLT 1.0 不識別基本輸出 URI 的概念。因此,Saxon 使用提供的 JAXP Result 對象的 SystemID 作為轉換的目標。如果 JAXP Result 對象沒有系統 ID,例如,如果您提供了未指定系統 ID 的 DOMResult 或 StreamResult,則可能會收到錯誤。

相比之下,s9api API 是為 XSLT 2.0 設計的(擴展為 3.0),因此其 XsltTransformer 對象具有顯式方法。setBaseOutputURI()

如果您做了某件事并且沒有成功,那么請確切地告訴我們您做了什么以及它是如何失敗的,然后我們可以幫助您下次正確。很難調試我們看不到的代碼。


查看完整回答
反對 回復 2022-08-17
  • 1 回答
  • 0 關注
  • 90 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號