<xsd:attribute> 元素

声明一个属性。

<attribute
  default = string
  fixed = string
  form = (qualified | unqualified) 
  id = ID
  name = NCName
  ref = QName
  type = QName
  use = (optional | prohibited | required): optional
  {any attributes with non-schema Namespace...}>
Content: (annotation?, (simpleType?))
</attribute>

属性

  • default
    属性具有默认值。 如果此属性不在 XML 文档内的实例中指定,则此属性具有给定的值。 如果此属性未出现在实例文档中,则此属性应出现在后架构验证信息集中。 如果属性实际上不在实例文档中,则架构的处理器应当表现为如同该属性已指定为默认值一样。 Defaultfixed 属性不能同时出现。

    可选项。

  • fixed
    属性具有固定值。 如果此属性出现于实例文档中,则其值必须等于给出的固定值。 如果此属性不出现,则此属性接收提供的值。 Defaultfixed 属性不能同时出现。

    可选项。

  • form
    属性的格式。 默认值是包含该属性的 schema 元素的 attributeFormDefault 属性的值。 该值必须是下列字符串之一: “qualified”或“unqualified”。

    如果该值是非限定的,则此属性无须由命名空间前缀限定并且匹配此属性的无冒号名称 (NCName),即本地名称。

    如果该值是限定的,则必须通过将架构的 targetNamespace 与属性的 NCName 相组合来限定此属性。

    可选项。

  • id
    该元素的 ID。 id 值必须属于类型 ID 并且在包含该元素的文档中是唯一的。

    可选项。

  • name
    属性名。 该名称必须是在 XML 命名空间规范中定义的 NCName。 如果包含元素是 schema 元素,则是必选项。 Nameref 属性不能同时出现。

    当根据一个架构对 XML 文档进行验证时,根据该架构中的 attribute 元素验证文档中的每一属性。

    可选项。

  • ref
    在该架构(或由指定的命名空间指示的其他架构)中声明的属性的名称。 ref 值必须是限定名 (QName)。 类型可以包括命名空间前缀。 Nameref 属性不能同时出现。 如果 ref 出现,则 simpleType 元素、formtype 不能出现。

    若要在复杂类型内使用现有属性定义声明一个属性,请使用 ref 属性指定现有属性定义。

    <xs:attribute name="mybaseattribute">
      <xs:simpleType>
       <xs:restriction base="xs:integer">
          <xs:maxInclusive value="1000"/>
       </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:complexType name="myComplexType">
      <xs:attribute ref="mybaseattribute"/>
    </xs:complexType>
    

    可选项。

  • type
    在该架构(或由指定的命名空间指示的其他架构)中定义的内置数据类型或简单类型的名称。 该类型必须是 QName。 类型可以包括命名空间前缀。 type 属性只能在内容不包含 simpleType 元素时出现。

    可选项。

  • use
    一个指示符,指示如何使用属性。

    如果指定,该属性必须具有以下值之一。

    optional

    属性是可选的并且可以具有任何值。 这是默认设置。 以下是等价项。

    <xs:attribute name="myattr" type="xs:string"/>
    <xs:attribute name="myattr" type="xs:string" use="optional"/>

    prohibited

    不能使用属性。 该属性用于其他复杂类型的限制中以禁止使用现有属性。

    <xs:complexType name="A">
      <xs:attribute name="x" type="xs:NCName"/>
      <xs:attribute name="y" type="xs:QName"/>
     </xs:complexType>
    

    <xs:complexType name="B"> <xs:complexContent> <xs:restriction base="xs:A"> <xs:attribute name="x" use="required" /> <xs:attribute name="y" use="prohibited"/> </xs:restriction> </xs:complexContent> </xs:complexType>

    required

    属性必须出现一次。

    该属性是必需的并且可以包含该属性的此类型定义允许的任何值。

    <xs:attribute name="myattr" type="xs:string" use="required"/>

    该属性用于其他复杂类型的限制或扩展中,以要求出现指定的一个或多个属性。

    <xs:complexType name="A">
      <xs:attribute name="x" type="xs:NCName"/>
      <xs:attribute name="y" type="xs:QName"/>
     </xs:complexType>
    

    <xs:complexType name="B"> <xs:complexContent> <xs:restriction base="xs:A"> <xs:attribute name="x" use="required" /> <xs:attribute name="y" use="prohibited"/> </xs:restriction> </xs:complexContent> </xs:complexType>

    如果将该属性声明为全局属性(其父元素是 schema),则对于该架构中的所有元素都需要该属性。

    可选项。

元素信息

出现次数

schema 元素中定义一次。 在复杂类型或属性组中引用多次。

父元素

attributeGroupschemacomplexTyperestriction (simpleContent)extension (simpleContent)restriction (complexContent)extension (complexContent)

内容

annotationsimpleType

备注

属性声明将名称与类型定义关联,类型定义可以是内置数据类型或简单类型。

属性声明可作为 schemacomplexTypeattributeGroup 元素(具有全局范围)的子元素出现,或在复杂类型定义内出现。 对于复杂类型,属性声明可作为本地声明或对具有全局范围的属性的引用出现。

此外,属性可以在 attributeGroupcomplexType 元素内的引用中出现。

示例

在以下示例中,通过对内置类型的引用声明一个属性,该属性的默认值为 test,该属性用在 complexType 元素中。

<xs:attribute name="mybaseattribute" type="xs:string" default="test" />
<xs:complexType name="myComplexType">
  <xs:attribute ref="mybaseattribute"/>
</xs:complexType>

以下示例中在 complexType 元素内直接声明了一个 required 属性。

<xs:complexType name="myComplexType">
  <xs:attribute name="mybaseattribute" type="xs:string" use="required"/>
</xs:complexType>

以下示例中声明了一个属性,具体方法是:从内置 integer 类型(通过限制)进行派生,将值的范围限制在 "60""95" 之间(包括 60 和 95)。

<xs:attribute name="myHolidayLocationTemperature">
  <xs:simpleType>
   <xs:restriction base="xs:integer">
    <xs:minInclusive value="60"/>
    <xs:maxInclusive value="95"/>
   </xs:restriction>
  </xs:simpleType>
</xs:attribute>

在以下示例中,属性被声明为包含十进制数值的列表。 (这允许诸如 shoeSizes="10.5 9 8 11" 之类的属性包含值 10.5、9、8 和 11 的列表)。

<xs:simpleType name="Sizes">
      <xs:restriction base="xs:decimal">
         <xs:enumeration value="10.5"/>
         <xs:enumeration value="9"/>
         <xs:enumeration value="8"/>
         <xs:enumeration value="11"/>
      </xs:restriction>
   </xs:simpleType>   

   <xs:attribute name="shoeSizes">
      <xs:simpleType>
         <xs:list itemType="Sizes"/>
      </xs:simpleType>
   </xs:attribute>

其他资源

有关更多信息,请参见“W3C XML Schema Part 1: Structures Recommendation”(W3C XML 架构第 1 部分:结构建议),网址为 www.w3.org/TR/2001/REC-xmlschema-1-20010502/\#element-all。

另请参见

参考

XML 架构 (XSD) 参考
XML 架构元素