2012-01-10 27 views
8

Được cung cấp:Làm thế nào để khai báo một phần tử chỉ với các thuộc tính trong một lược đồ XML?

<authentication password="turkey" partnerid="exam" /> 

làm cách nào để khai báo thành phần này trong lược đồ XML?

Tôi đã có:

<xs:element name="authentication" type="auth_type" /> 

<xs:complexType name ="auth_type"> 
    <xs:simpleContent> 
    <xs:extension base="xs:string"> 
     <xs:attribute name="password" type="xs:string" /> 
     <xs:attribute name="partnerid" type="xs:string" /> 
    </xs:extension> 
    </xs:simpleContent> 
</xs:complexType> 

nhưng nó sẽ cho phép các phần tử có nội dung văn bản, sẽ nó? Tôi không muốn điều đó ...

Trả lời

15

Bạn có thể loại bỏ các xs:simpleContentxs:extension ....

<xs:element name="authentication" type="auth_type" /> 

    <xs:complexType name ="auth_type"> 
    <xs:attribute name="password" type="xs:string" /> 
    <xs:attribute name="partnerid" type="xs:string" /> 
    </xs:complexType> 
+0

Tôi nghĩ xs: mở rộng là để cho phép một phần tử có các thuộc tính ... – Mirko

+0

@Mirko - Trong ví dụ của bạn, bạn phải sử dụng 'xs: extension' để mở rộng' xs: simpleContent' và 'xs: simpleContent' là nội dung được cho phép trong phần tử của bạn. –

0

những gì bạn cần là một yếu tố phức tạp, ví dụ:

<product prodid="1345" /> 

Các " sản phẩm "phần tử ở trên không có nội dung nào cả. Để xác định một loại không có nội dung, chúng ta phải xác định một loại cho phép các yếu tố trong nội dung của nó, nhưng chúng tôi không thực sự tuyên bố bất kỳ yếu tố, như thế này:

<xs:element name="product"> 
    <xs:complexType> 
    <xs:complexContent> 
     <xs:restriction base="xs:integer"> 
     <xs:attribute name="prodid" type="xs:positiveInteger"/> 
     </xs:restriction> 
    </xs:complexContent> 
    </xs:complexType> 
</xs:element> 

séc http://www.w3schools.com/schema/schema_complex_empty.asp

Các vấn đề liên quan