簡體   English   中英

XSD元素可以包含布爾值或屬性嗎?

[英]An XSD element can contains a bool value or an attribute?

如何定義和可以同時使用以下兩種肥皂請求格式的xsd元素(其中“ MyOption”是可選的,可能不存在)?

要求1:

<sdf:MyElement>true</sdf:MyElement>

要么

要求2:

<sdf:MyElement>
    <sdf:MyOption>xxx</sdf:MyOption>
    <sdf:Value>true</sdf:Value>
</<sdf:MyElement>

我嘗試過此方法,但僅適用於請求2格式:

<xs:element name="MyElement" default="false" minOccurs="0" maxOccurs="1">
   <xs:complexType>
      <xs:simpleContent>
         <xs:extension base="xs:boolean">
            <xs:attribute name="MyOption" type="xs:string" use="optional"/>
         </xs:extension>
       </xs:simpleContent>
   </xs:complexType>
</xs:element>

抱歉,這不是您問題的嚴格答案,但我必須指出這一點。 在wsdl模式中創建這樣的元素並不容易,這是有原因的。

使兩個選項均可用似乎真的不是明智的服務合同設計。 這違反了SOA服務設計的原則,因此我強烈建議不要這樣做。 原因如下:

  • 它可能會使消費者和開發人員感到困惑。
  • 它損害了服務的可發現性,因為它損害了合同的可解釋性-該元素將具有可變的類型,並且在某些情況下的行為有所不同-有時期望子元素,有時期望內部文本值;
  • 此類型不會自動生成正確的驗證邏輯-您將必須實現一個涵蓋兩種情況的特定驗證邏輯。

我的建議-僅遵循某種形式的“請求2”格式,並保留“可選”選項。 我可以通過添加一個簡單的元素序列來做到這一點,正如馬丁·霍恩(Martin Honnen)在其評論中指出的那樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM