6

標準のJavaライブラリを使用してXMLファイルを検証しようとしていますが、上記のエラーが発生します。私のXSDファイルtest1.xsd

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:complexType name="foo">
        <xsd:attribute name="bar" type="xsd:string" />
    </xsd:complexType>  
</xsd:schema>

コード付き(EclipseでJUnitテストとして実行):

@Test
public void testValidatingParser1() throws Exception {
    String SCHEMA_PATH = "test1.xsd";
    InputStream SCHEMA_STREAM = getClass().getResourceAsStream(SCHEMA_PATH);
    StreamSource SCHEMA_SOURCE = new StreamSource(SCHEMA_STREAM);
    SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    Schema schema = sf.newSchema(SCHEMA_SOURCE);
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    factory.setSchema(schema);
}

エラーは次のとおりです。

java.lang.UnsupportedOperationException: This parser does not support specification "null" version "null"
at javax.xml.parsers.DocumentBuilderFactory.setSchema(Unknown Source)
at org.xmlcml.graphics.misc.SchemaTest.testValidatingParser1(SchemaTest.java:123)

このエラーは、XMLパーサー(Xercesなど)との非互換性から発生しているようですが、この投稿を参照してください。ただし、フレームワーク(EclipseとJunit以外)はありません。POMに明示的にxercesがありません。簡単な回避策はありますか(検証する限り、どのパーサーを使用してもかまいません)。

4

3 に答える 3

12

他のソフトウェアに含まれている Xerces の互換性のないバージョンまで追跡しました。Xerces の新しいバージョンを強制すると、問題が解決します。

于 2012-10-23T04:36:37.823 に答える
0

xsdでこれを試しましたか?

属性には属性を使用しますuse="optional"

要素の場合、属性を使用するnillable="true"か、属性を使用しますminOccurs="0"

XML スキーマでの null の表現

于 2012-10-21T05:26:39.470 に答える