2015-05-01 144 views
0

我有一個XSD定義,它是這樣的:XSD限制複雜類型的元素

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="ARTICLES"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element maxOccurs="unbounded" name="ARTICLE"> 
      <xs:complexType> 
      <xs:sequence> 
       <xs:element name="NAME" type="xs:string" /> 
       <xs:element name="TYPE" type="xs:unsignedByte" /> 
       <xs:element name="LENGTH" type="xs:unsignedByte" /> 
       <xs:element name="WIDTH" type="xs:unsignedShort" /> 
       <xs:element name="HEIGHT" type="xs:unsignedShort" /> 
       <xs:element maxOccurs="unbounded" name="PRICELIST"> 
       <xs:complexType> 
        <xs:sequence> 
        <xs:element name="SALESCONTRACT" type="xs:string" /> 
        <xs:element name="PRICE" type="xs:decimal" /> 
        <xs:element name="VAT" type="xs:unsignedByte" /> 
        </xs:sequence> 
       </xs:complexType> 
       </xs:element> 
      </xs:sequence> 
      </xs:complexType> 
     </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
</xs:schema> 

的XML可以包含ATRICLES的集合,每個項目可以有1個或多個價目表項

現在我喜歡拿一個元素並限制值條目。即只用正則表達式或數字或長度。 隨着simpletype,我發現了很多與模式標籤一起工作的例子。 這將如何處理複雜的類型?

問候,

裏克

回答

0

您可以簡單地將所有的你已經使用xs:simpleType任何的ARTICLE您希望進一步約束部分發現這些例子。例如,爲了限制NAME成爲最大長度的32個字符:

  <xs:element name="NAME"> 
      <xs:simpleType> 
       <xs:restriction base="xs:string"> 
       <xs:maxLength value="32"/> 
       </xs:restriction> 
      </xs:simpleType> 
      </xs:element> 
+0

似乎工作... 由於 – Rick