我正在將一些XSLT(更具體地說是schematron驗證規則)從使用Altova轉換爲Saxon.NET(Saxon-HE版本=「9.7.0.4」)作爲XSLT處理器。但是,我遇到了一個我無法找到解決方案的問題。撒克遜和文檔函數
問題出在文檔()函數。在我的XSLT中,我有:
<sch:let name="params" value="document('https://some_web_address')"/>
此URL帶回了XSLT使用的參數XML。 問題是,這部作品在Altova的,但是不工作(返回空),當我開始使用Saxon.NET
試圖DOC可用()/未解析文本可用()功能後,似乎沒有任何返回來自URL的XML。但是,如果我創建了返回的xml數據的xml文件,請將其放置在本地目錄(本地爲我的XSLT)並指定xslt的完整路徑,但函數返回true,但doc-available()仍然返回false。我甚至創造了一個小假XML示例:
<?xml version="1.0" encoding="UTF-8"?>
<parameters>
<parameter>100</parameter>
</parameters>
XML是有效的,但帶回來完全相同的結果(DOC可用() =假,未解析文本可用() =真)
我已經看過這裏的一些其他相關問題(XSLT Document() Function results in Saxon Error/ Attribute-String cant be used as Filepath),但沒有一個完全解決了我的問題。
這個問題可能需要做的XSLT板的基URI的東西,所以我跑:(。) 基URI和靜態基-URI()兩者返回空。
所以我的問題是:
- 是可以使用一個URL(網頁URI)作爲參數傳遞給文件()與Saxon.NET?
- 如果不是,我在做什麼錯誤,其中doc-available()爲false,但unparsed-text-available()對有效的xml文件返回true(如上所示)?
對我來說,理想的解決方案是使用URL,但可以降級爲使用本地文件。如果有人能幫助我,我將不勝感激。
你可以發佈一個最小的,但完整的樣式給人錯誤,加上樣本數據?我把你的虛擬XML樣本放入一個文件'test2016112201.xml'到一個樣式表中,該文件用'doc-available($ doc1-uri)'和'doc($ doc1-uri)/ parameters/parameter'訪問該文件,然後用Saxon .NET 9.7 EE和HE運行它,結果是'true ',這樣工作正常。我只需爲該測試運行'transform.exe'。目前尚不清楚您是使用命令行工具還是某些.NET代碼,但您可能想要更詳細地解釋和顯示如何使用Saxon .NET。 –
如果unparsed-text-available()爲true,但doc-available()爲false,那麼解析XML就是某種問題。這是一個奇怪的;可能是由於某種配置設置。需要了解更多關於如何運行它(例如,從命令行或C#應用程序)。使用document()會比doc-available()提供更好的診斷,只會返回true或false,並不會告訴你爲什麼。 –