XSD:缺少元素的默认值

ram*_*ius 8 xml xsd

是否可以在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>
Run Code Online (Sandbox Code Playgroud)

如果我有XML文件

<protocol>ftp</protocol>
Run Code Online (Sandbox Code Playgroud)

要么

<protocol>webdav</protocol>
Run Code Online (Sandbox Code Playgroud)

它验证并获得正确的价值.如果我有XML文件

<protocol></protocol>
Run Code Online (Sandbox Code Playgroud)

它也验证并获得默认值ftp.

我的搜索显示默认属性值在缺少属性时应用,默认元素值在元素为空时应用.是否可以为缺少的元素设置默认值?

问候

rambius

Col*_*ion 19

没有.XSD没有规定.

您可以指定元素的默认值.但是一旦它丢失(当它的父元素的内容模型允许时),对该元素的任何请求都将返回空字符串或null(或只是一个错误). 缺少的元素是不存在的元素!

对于属性,它是可能的,因为属性要简单得多.元素的所有属性都有效地构成了一组无序的命名简单值.附加到父元素的属性树(具有可变结构)没有某种属性树.

但是元素的东西要复杂得多.如果允许某些关于缺失元素的"默认",那将导致很多歧义.例如,必须指定某种"默认内容",这将是一些自动引发的元素序列代替空虚......甚至当只有一些元素时,每个都会引发一些可能的"默认内容"明确指定,其他人必须隐式补充它们(默认情况下).....好吧,如果你进一步思考,事情就变得令人难以置信了.那么就必须创建另一种语言!但出于什么目的?