2016-11-09 66 views
0

我可能錯過了撒克遜一些明顯的配置選項,但這裏是我的問題:如何使用具有已定義名稱空間模式的saxon驗證無名稱空間文件?

我有一個xml文件input.xml沒有命名空間聲明。 我有一個xsd模式,schema.xsd與mynamespace命名空間相關聯。 我想使用Saxon和schema.xsd文件驗證input.xml文件,就好像我的input.xml文件的根元素位於mynamespace命名空間中一樣? 爲了提出不同的問題,我想在input.xml的根元素中添加默認名稱空間聲明xmlns =「mynamespace」,但不用Java打開它,僅用於驗證目的。 這可能嗎?在Saxon中是否有配置選項允許爲要驗證的xml文件聲明默認名稱空間?

回答

0

是的,Saxon有一個用於將無命名空間文檔轉換爲名稱空間文檔的工具:它被稱爲XSLT。

如果您想要超高效率,您可以編寫一個更改命名空間的SAX過濾器,並將此過濾器放入架構驗證器前面的處理管道中。

+0

好的。謝謝。正如你猜測的那樣,我不想因爲效率而使用XSLT。 SAX過濾器是一個選項,我會嘗試。或者,我只是將我的模式切換到匿名模式。 –

+0

在這種簡單轉換的情況下,Saxon的處理時間主要是由XML解析的成本決定的。使用SAX不會節省任何重要的處理時間,但如果文檔非常大,可能會節省內存。 –