Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XSD:缺少元素的默认值_Xml_Xsd - Fatal编程技术网

Xml XSD:缺少元素的默认值

Xml XSD:缺少元素的默认值,xml,xsd,Xml,Xsd,是否可以为XML模式中缺少的元素定义默认值。我有以下片段: <xs:element name="protocol" nillable="false" minOccurs="0" default="ftp"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="ftp"/> <xs:enumeration value

是否可以为XML模式中缺少的元素定义默认值。我有以下片段:

<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></protocol>
ftp

webdav
它验证并获得正确的值。 如果XML文件中有

<protocol>ftp</protocol>
<protocol></protocol>

它还验证并获得ftp的默认值

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

问候


兰比乌斯

没有。XSD没有对此做出规定

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

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

但有了元素,事情就复杂得多了。 如果允许某些关于缺少元素的“默认”内容,那将导致很多歧义。例如,必须指定某种“默认内容”, 这将是一系列的元素自动被唤起来代替空虚。。。 或者甚至是一些可能的“默认内容”,当只有一些元素被显式指定,而其他元素必须隐式地补充它们时(默认情况下),每个内容都会被调用。 .... 好吧,如果你进一步思考,事情变得令人难以置信的复杂。 那么就必须创建另一种语言!但是为什么呢?

调用这个函数

def _get_(x):
  if x is not None:
     return(x.text)
  else:
    # print('Setting Blank')
     return ''
_get_(parent.find('childtag'))

minOccurs
应该是1,然后我希望协议元素是可选的,但如果缺少,则应该是ftp。看起来这是不可能的,我应该在应用程序中处理这个逻辑,而不是在模式中。谢谢你的信息!作为参考,以下是XML模式规范中涉及的内容: