2011-09-20 38 views
9

Tôi đang cố gắng xác thực tài liệu XML của mình dựa vào lược đồ XML của mình.Xác thực lược đồ XML: cvc-complex-type.2.4.a

Đây là schema của tôi:

<?xml version="1.0" encoding="UTF-8"?> 
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://cars.example.org/"> 
    <element name="cars"> 
    <complexType> 
     <sequence minOccurs="0" maxOccurs="unbounded"> 
     <element name="brand" type="string"/> 
     </sequence> 
    </complexType> 
    </element> 
</schema> 

và đây là tài liệu XML của tôi:

<?xml version="1.0" encoding="UTF-8"?> 
<cars xmlns="http://cars.example.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://cars.example.org/ cars.xsd"> 
    <brand>x</brand> 
</cars> 

Bây giờ khi tôi đang chứng thực tài liệu (thông qua Eclipse) tôi nhận được sau tin nhắn trên dòng 4:

cvc-complex-type.2.4.a: Invalid content was found starting with element 'brand'. One of '{"":brand}' is expected. 

Thông báo này không có ý nghĩa: (Và rất khó (không thể) với giải pháp google.

Cảm ơn sự giúp đỡ của bạn.

Trả lời

11

schema của bạn được xác định "thương hiệu" như là trong không gian tên. Đó là ý nghĩa của '{"":brand}'. Nhưng trong tài liệu XML của bạn, phần tử "thương hiệu" nằm trong không gian tên http://cars.example.org/. Vì vậy, họ không phù hợp và bạn nhận được lỗi xác nhận của bạn.

Để khai báo phần tử "thương hiệu" trong lược đồ của bạn như đang ở trong không gian tên http://cars.example.org/, hãy thêm thuộc tính elementFormDefault="qualified" vào phần tử lược đồ.

Tôi đề nghị rằng để hoàn thành, bạn cũng thêm attributeFormDefault="unqualified" vào phần tử lược đồ, mặc dù đó không phải là vấn đề của bạn trong trường hợp này.

0

Bạn chưa xác nhận thuộc tính trong xe hơi, đó là url của namespace, điều này sẽ làm việc:

<?xml version="1.0" encoding="UTF-8"?> 
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
    elementFormDefault="qualified" 
    targetNamespace="http://cars.example.org/"> 
    <element name="cars"> 
    <complexType> 
     <sequence minOccurs="0" maxOccurs="unbounded"> 
     <element name="brand" type="string"/> 
     </sequence> 
     <attribute name="schemaLocation" type="anyURI"/> 
    </complexType> 
    </element> 
</schema> 
Các vấn đề liên quan