2016-11-06 88 views
1

如何通過ComplexType測試替代類型?XML Schema類型替代方法測試

比如我的ComplexType 「客戶端」:

<xs:complexType name="client"> 
    <xs:sequence> 
     <xs:element name="clientId" type="xs:long"/> 
     <xs:element name="name" type="xs:string"/> 
    </xs:sequence> 
</xs:complexType> 

而且createOrderRequest:

<xs:element name="createOrderRequest"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="client"> 
       <xs:alternative type="client"/> 
       <xs:alternative type="xs:long"/> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

如何測試laternative是XS:長期或複合型 「客戶端」?

回答

2

XSD 1.1中的替代類型總是基於測試有問題的元素的屬性值。請參閱規範中的示例:

<xs:element name="message" type="messageType"> 
    <xs:alternative test="@kind='string'" type="messageTypeString"/> 
    <xs:alternative test="@kind='base64'" type="messageTypeBase64"/> 
    <xs:alternative test="@kind='binary'" type="messageTypeBase64"/> 
    <xs:alternative test="@kind='xml'" type="messageTypeXML"/> 
    <xs:alternative test="@kind='XML'" type="messageTypeXML"/> 
    <xs:alternative      type="messageType"/> 
</xs:element> 

因此,通過查看屬性,您始終知道您獲得的是哪種類型。

當然,如果你使用的是讓你訪問PSVI信息,那麼你也可以直接測試的類型,例如在模式感知的XPath語言,你可以做

if (message instance of element(message, messageTypeBase64)) then...