簡體   English   中英

xsd驗證xml可選子元素

[英]xsd validate xml optional sub-elements

我一直試圖構造一個XSD文件來驗證一些xml

XSD示例

<xs:element name="person" type="persontype"/>
<xs:complexType name="persontype">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

XML范例

<persontype>
  <firstname/>
  <lastname/>
</persontype>

我如何構造xsd以要求“ firstname”是強制性的,而對於XML來說,“ lastname”甚至不是必需的,並且只要層次結構是,就不必按順序排列。受尊重?

可能遇到的XML最終結果,根據我的最終xsd,我希望它被認為是有效的。

有效方案1

<persontype>
  <firstname/>
</persontype>

有效方案2

<persontype>
  <lastname/>
  <firstname/>
</persontype>

在幫助下感謝您的時間。

我已經根據指標XML Schema教程對此進行了調整:

<xs:element name="person">
  <xs:complexType>
    <xs:all>
      <xs:element name="firstname" type="xs:string"/>
      <xs:element name="lastname" type="xs:string" minOccurs="0"/>
    </xs:all>
  </xs:complexType>
</xs:element>

如果使用all指示符,則元素的順序可以是任意的,但是默認情況下,每個元素必須恰好發生一次。 要使姓氏為可選,可以通過提供minOccurs指示器並將其設置為零來更改默認名稱。

這將允許您有選擇地為每個人指定一個姓氏,並使用任意順序的元素。

暫無
暫無

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

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