2013-09-25 56 views
2

我用我的xsd在Java中驗證我的XML聲明:XSD驗證失敗,CVC-elt.1:找不到元素

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> 

我在這裏或其他論壇上看過幾篇文章,但沒有發現我發現的錯誤似乎適用。請幫助

回答

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> 

我猜這兩個錯誤的組合是它最糟糕的部分。

相關問題