Xml XSD的默认值

Xml XSD的默认值,xml,schema,xsd,Xml,Schema,Xsd,这里询问XSD文件中指定的默认值。基本上,您可以说字段“foo”默认为值“bar” 我想知道的是。。。是否可以将字段默认值作为另一个字段中的值?如果字段“foo”是“bar”而“otherfoo”是空的,我可以说它的默认值是“foo”中的值吗。。。大致如下: <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="button" type="button"/> <xs

这里询问XSD文件中指定的默认值。基本上,您可以说字段“foo”默认为值“bar”

我想知道的是。。。是否可以将字段默认值作为另一个字段中的值?如果字段“foo”是“bar”而“otherfoo”是空的,我可以说它的默认值是“foo”中的值吗。。。大致如下:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="button" type="button"/>
  <xs:complexType name="button">
    <xs:attribute name="id" type="xs:string"/>
    <xs:attribute name="label1" type="xs:string" default="Go"/>
    <xs:attribute name="label2" type="xs:string" default=label1/>
  </xs:complexType>
</xs:schema>

<button id="1"/>

其中Label1默认为“Go”。。。Label2默认为Label1中的值

目标是消除冗余,例如:

<Field Name="State" DataSourceField="State" />


不幸的是,这是不可能的,事实上,XML模式很少或根本不支持跨元素依赖关系(包括验证)。

我没有看到任何迹象表明这是可能的,所以我并不惊讶。。。这让我很难过,因为现在我必须编辑代码来完成“er”的工作。无论如何,我不相信模式是适合这种事情的地方。如果您正在使用XSLT读取文件以编程该级别的默认值,那么就很容易了。