3

Javaでxsdを使用してxmlを検証しています:

javax.xml.validation.SchemaFactory
.newInstance("http://www.w3.org/2001/XMLSchema")
.newSchema(new java.io.File(schemaPath))
.newValidator()
.validate(new javax.xml.transform.stream.StreamSource(new java.io.FileInputStream(xmlPath)));

次のエラーが表示されます。

org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 18; cvc-elt.1: Deklaration des Elements "WrappedBodyText" kann nicht gefunden werden.

xml を次のように縮小しました。

<WrappedBodyText></WrappedBodyText>

xsd を次のように減らしました。

<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://compa.ny/customer/schema/Wrapper"
        xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:Wrapper="http://compa.ny/customer/schema/Wrapper"
        xmlns:WrapperType="http://compa.ny/customer/schema/WrapperType"
        xmlns:standardservice="http://compa.ny/standard/service/schema">

    <complexType name="WrappedBodyText">
    </complexType>
</schema>

ここまたは他のフォーラムでいくつかの投稿を調べましたが、見つかったエラーはどれも当てはまらないようです. 助けてください

4

1 に答える 1

2

私が理解している限り、complexType の単一の定義では十分ではありません。要素も定義する必要がありました。

<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://compa.ny/customer/schema/Wrapper"
        xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:Wrapper="http://compa.ny/customer/schema/Wrapper"
        xmlns:WrapperType="http://compa.ny/customer/schema/WrapperType"
        xmlns:standardservice="http://compa.ny/standard/service/schema">

    <complexType name="WrappedBodyText">
    </complexType>

    <element name="WrappedBodyText" type="Wrapper:WrappedBodyText"/>
</schema>

しかし、xml インスタンスにもエラーがありました。バリデーターは空の名前空間を持つ要素 WrappedBodyText を見つけましたが、定義された targetNamespace 内の要素を予期していました。そのため、xml インスタンスも変更しました。

<WrappedBodyText xmlns="http://compa.ny/customer/schema/Wrapper"></WrappedBodyText>

この 2 つのエラーの組み合わせが、最悪の部分だったと思います。

于 2013-10-01T07:58:08.373 に答える