關於java中的XML模式版本和解析庫,我明白最好的方法是使用「1.0」而不是「1.1」,因爲不是所有的庫和環境支持它,好處是幾乎沒有,但面臨的情況是XML模式「1.1」,「必須」得到支持,我有以下問題:XMLStreamException:不支持XML版本「1.1」,只有XML 1.0支持
在這部分程序:
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLEventReader reader = factory.createXMLEventReader(XsltTest.class.getResourceAsStream("/an-xsl-file.xsl"));
String encoding = null;
if(reader.hasNext()){
XMLEvent event = reader.nextEvent();
if(event instanceof StartDocument){
encoding = ((StartDocument)event).getCharacterEncodingScheme();
}
}
其中「an-xsl-file.xsl」是一個使用XML Schema版本「1.1」的XSLT文件,在調用reader.nextEvent()時會拋出一個XMLStreamException,爭辯只有XML 1.0被支持,如果我在一個獨立的java項目(jdk 1.7)中使用相同部分的代碼,那麼這個代碼片段沒有問題,但是當這個代碼片段在具有相同JVM的特定應用程序中運行時,它會失敗我提到的方式;這表明我認爲可能存在依賴性問題,但我還沒有弄清楚它可能是什麼。
應用程序使用XML和XSLT處理庫,如:
- 撒克遜9
- 的Xerces
- 蓖麻XML
- 的Xalan
其中,我剛開始熟悉它們,所以我不確定它們內部是否會有衝突,是否有任何已知的衝突問題?或者它只是另一種不同的東西?我錯過了什麼?你能分享一下你對它的瞭解嗎?
順便說一句,現在,我只是不能使用XML版本1.0,主要是因爲該文檔僅使用1.1中支持的字符代碼。
謝謝!
編輯:
好感謝您的意見,我知道這可能是一個非常廣泛的問題,但說實話,這是我面臨的權利現在的情況,這就是爲什麼我在找一個提示可能是什麼問題,從而進一步調查和改進信息。
這是異常跟蹤的一部分:
javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,20]
Message: XML version "1.1" is not supported, only XML 1.0 is supported.
at com.sun.xml.stream.XMLReaderImpl.next(XMLReaderImpl.java:508)
at com.sun.xml.stream.XMLEventReaderImpl.nextEvent(XMLEventReaderImpl.java:62)
at com.pkg.tofailing.artifact.ClassWithError.getXMLEncoding(ClassWithError.java:216)
其中「getXMLEncoding」是包含的代碼所提供的片段,抱歉,但我可能會惹上麻煩的方法,如果我分享不止於此,其餘stacktrace只包含應用程序類。
此外,關於XSL文件我提到,這是怎麼開始:
<?xml version="1.1" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="yes" encoding="UTF-8" omit-xml-declaration="yes"/>
的故障發生時,光看第一行,在那裏遇到了1.1版本的XML的,如果我改變它爲1.0,然後另一個誤差與該內容的後線提出:
<xsl:text> </xsl:text>
字符「&#12;」根據www.w3.org未被使用的是使其在XML 1上失敗的一個。0,但由於某些原因,它必須支持並且XML 1.1才能支持,現在問題出現在XML版本中。
希望現在情況更清楚。
再次感謝!
撒克遜支持[1.1 XSD,而現在(http://www.saxonica.com/documentation9.5/#!conformance/schema11)。它也支持XML 1.1。您的文本不是很清楚您的錯誤是否與使用的XML版本(1.1是_very,非常罕見)或XSD版本(更常見的是1.1)有關,這將有助於顯示您獲得的_exact_錯誤,並且最好與提升它的工具列表中的確切工具。 – Abel
添加到@ Abel的觀點:XML和XSD版本中的1.1完全不同。你應該說明你爲什麼需要其中一個或兩個的具體原因,並詢問關於特定圖書館特定版本的具體問題。您的帖子在大量標準和工具中漫遊,而沒有真正要求回答的問題。 – kjhughes
@ kjhughes,但這可能是因爲OP說「我剛剛開始熟悉它們」,如果你第一次開始就很難區分所有這些工具和技術層次(這並不是說我們不需要獲得更好的細節)。 – Abel