2016-11-06 3 views
1

ComplexTypeでタイプの代替をテストするには?例えばXMLスキーマタイプの代替テスト

私は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:laternativeテストする方法

<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> 

は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情報にアクセスすることができます言語を使用している場合、あなたはまた、あなたが

if (message instance of element(message, messageTypeBase64)) then... 
を行うことができ、スキーマを意識したXPath、例えば、直接のタイプをテストすることができます