2013-10-08 56 views
0

我有一個元素「方法」和「名稱」,如下所示: 我想要將「名稱」中從「group1」的ref更改爲「group2」 「方法」,因爲我想改變限制。根據其他元素值更改XSD中的限制

有沒有可能這樣做?

<xs:element name="Method" type="xs:string" /> 

<xs:element name="Name"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:choice maxOccurs="unbounded"> 
       <xs:element ref="group1" /> 
      </xs:choice> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 


<xs:element name="group1"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
      <xs:enumeration value="ABC" /> 
      <xs:enumeration value="PQR" /> 
     </xs:restriction> 
    </xs:simpleType> 
</xs:element> 

<xs:element name="group2"> 
    <xs:simpleType> 
     <xs:restriction base="xs:string"> 
      <xs:enumeration value="XYZ" /> 
      <xs:enumeration value="ABC" /> 
     </xs:restriction> 
    </xs:simpleType> 
</xs:element> 

回答

1

對於XSD 1.0,你必須驗證XML架構之外的這樣的限制。考慮使用XSLT進行額外的驗證或Schematron。

對於XSD 1.1,您可以使用條件類型分配。請參閱xs:alternative。但是請注意,你將不得不進行重組。 xs:alternative測試可以引用元素本身和常量上的屬性,而不引用文檔中的任意元素;甚至不允許相對引用其他元素或屬性。

相關問題