簡體   English   中英

XSD:缺少元素的默認值

[英]XSD: default value of a missing element

是否可以在XML Schema中為缺少的元素定義默認值。 我有以下代碼段:

<xs:element name="protocol" nillable="false" minOccurs="0" default="ftp">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:enumeration value="ftp"/>
      <xs:enumeration value="webdav"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

如果我有XML文件

<protocol>ftp</protocol>

要么

<protocol>webdav</protocol>

它驗證並獲得正確的價值。 如果我有XML文件

<protocol></protocol>

它也驗證並獲得默認值ftp。

我的搜索顯示默認屬性值在缺少屬性時應用,默認元素值在元素為空時應用。 是否可以為缺少的元素設置默認值?

問候

rambius

沒有.XSD沒有規定。

您可以指定元素的默認值。 但是一旦它丟失(當它的父元素的內容模型允許時),對該元素的任何請求都將返回空字符串或null(或只是一個錯誤)。 缺少的元素是不存在的元素!

對於屬性,它是可能的,因為屬性要簡單得多。 元素的所有屬性都有效地構成了一組無序的命名簡單值。 附加到父元素的屬性樹(具有可變結構)沒有某種屬性樹。

但是元素的東西要復雜得多。 如果允許某些關於缺失元素的“默認”,那將導致很多歧義。 例如,必須指定某種“默認內容”,這將是一些自動引發的元素序列代替空虛......甚至當只有一些元素時,每個都會引發一些可能的“默認內容”明確指定,其他人必須隱式補充它們(默認情況下)。 ....好吧,如果你進一步思考,事情就變得令人難以置信了。 那么就必須創建另一種語言! 但出於什么目的?

暫無
暫無

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

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