2016-02-04 83 views
0

我在創建非空(null)所需的複雜類型時遇到了問題,並且具有非限定符(non-null)|空白)。這是我迄今爲止所擁有的。如何在XSD複雜類型定義中混合擴展和限制

<xsd:complexType name="PRODUCT"> 
    <xsd:simpleContent> 
     <xsd:extension base="xsd:string"> 
      <xsd:attribute name="Qualifier" type="xsd:string" use="required" /> 
     </xsd:extension> 
     <xsd:restriction base="xsd:string"> 
      <xsd:minLength value="1"/> 
     </xsd:restriction> 
    </xsd:simpleContent>   
</xsd:complexType> 

回答

0

這是不可能在同一類型定義既extensionrestriction。用限制定義一個簡單的類型,然後擴展這個自定義類型。你可以使用這個簡單的類型來定義元素和屬性。

請注意,XML(以及擴展名如果原諒雙關語XML Schema)區分大小寫。 「限定符」和「限定符」不是相同的屬性名稱。

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="PRODUCT" type="PRODUCTType"/> 

    <xs:complexType name="PRODUCTType"> 
     <xs:simpleContent> 
      <xs:extension base="restrictedType"> 
       <xs:attribute name="qualifier" type="restrictedType" use="required" /> 
      </xs:extension> 
     </xs:simpleContent>   
    </xs:complexType> 

    <xs:simpleType name="restrictedType"> 
      <xs:restriction base="xs:string"> 
       <xs:minLength value="1"/> 
      </xs:restriction> 
    </xs:simpleType> 

</xs:schema> 

下面的XML文檔將針對上述模式是有效的:

<?xml version="1.0" encoding="UTF-8"?> 
<PRODUCT qualifier="value">text</PRODUCT> 

而文件,如

<?xml version="1.0" encoding="UTF-8"?> 
<PRODUCT qualifier="">text</PRODUCT> 

<?xml version="1.0" encoding="UTF-8"?> 
<PRODUCT qualifier="value"></PRODUCT> 

將是無效的。