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