假设我要设置一个通用的complexType,如下所示:
<xs:complexType name="button">
<xs:sequence>
<xs:element name="id" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="href" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="label" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
我想在我的模式文件的各个位置引用complexType,如下所示:
<xs:element name="someButton" type="button" />
我可以通过someButton元素为按钮子元素设置默认值吗? (即,如果我希望someButton的默认标签为“Go”或默认的href为“index.html”)
基本上...现在我有类似的东西
<Field Name="State" DataSourceField="State" />
并且我正在尝试以尽可能简单的方式删除冗余。
最佳答案
不,仅适用于简单值。但是也许您可以通过为复杂Type的所有简单部分提供默认值来使用它们来完成所需的工作。但是,对属性而言,它比对您拥有的元素更有效(因为“缺少属性时将应用默认属性值,而当元素为空时将应用默认元素值”-参见下文)。默认情况下,属性本身是可选的:
<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="href" type="xs:string" default="index.html"/>
<xs:attribute name="label" type="xs:string" default="Go"/>
</xs:complexType>
</xs:schema>
<button id="1"/>
http://www.w3.org/TR/xmlschema-0/#OccurrenceConstraints