假设我要设置一个通用的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

10-04 18:41