XML Schema element 元素

  • 定义和使用

    element 元素定义一个元素。
    父元素:schema, choice, all, sequence, group
  • 语法

    <element
      id=ID
      name=NCName
      ref=QName
      type=QName
      substitutionGroup=QName
      default=string
      fixed=string
      form=qualified|unqualified
      maxOccurs=nonNegativeInteger|unbounded
      minOccurs=nonNegativeInteger
      nillable=true|false
      abstract=true|false
      block=(#all|list of (extension|restriction))
      final=(#all|list of (extension|restriction))
      any attributes
      >
      
      annotation?,(simpleType|complexType)?,(unique|key|keyref)*
      
    </element>
    (?符号声明该元素可以出现零次或一次,而 * 符号声明该元素可以出现零次或多次。)
  • 参数

    属性 描述
    id 可选的。 指定元素的唯一ID
    name 可选的。 指定元素的名称。 如果父元素是架构元素,则此属性为必需
    ref 可选的。 引用另一个元素的名称。 ref 属性可以包含名称空间前缀。 如果父元素是架构元素,则不能使用此属性
    type 可选的。 指定内置数据类型的名称,或者 simpleType 或 complexType 元素的名称
    substitutionGroup 可选的。 指定可以用该元素替换的元素的名称。 如果父元素不是架构元素,则不能使用此属性
    default 可选的。 指定元素的默认值(仅当元素的内容是简单类型或仅文本时才可以使用)
    fixed 可选的。 为元素指定一个固定值(仅当元素的内容是简单类型或仅文本时才可以使用)
    form 可选的。 指定元素的形式。 “unqualified” 表示此元素不需要使用名称空间前缀进行限定。 “qualified” 表示此元素必须使用名称空间前缀进行限定。 默认值为架构元素的elementFormDefault 属性的值。 如果父元素是架构元素,则不能使用此属性
    maxOccurs 可选的。 指定此元素可以在父元素中出现的最大次数。 该值可以是 >= 0 的任何数字,或者如果您不希望限制最大数目,请使用值 “unbounded”。 默认值为 1。如果父元素是架构元素,则不能使用此属性。
    minOccurs 可选的。 指定此元素可以在父元素中出现的最小次数。 该值可以是 >= 0 的任何数字。默认值为 1。如果父元素是架构元素,则不能使用此属性。
    nillable 可选的。 指定是否可以为元素分配一个明确的 null 值。 True 可使元素的实例将 null 属性设置为 true。 null 属性定义为实例的 XML Schema 名称空间的一部分。 默认为 false。
    abstract 可选的。 指定是否可以在实例文档中使用该元素。 True表示该元素不能出现在实例文档中。 取而代之的是,其替换组属性包含此元素的限定名称(QName)的另一个元素必须出现在该元素的位置。 默认为 false。
    block 可选的。 防止使用具有指定派生类型的元素代替该元素。 此值可以包含#all或作为扩展,限制或 equivClass 的子集的列表:
    • extension -防止由扩展派生的元素
    • restriction -防止限制产生的元素
    • substitution -防止替换产生的元素
    • #all-阻止所有派生元素
    final 可选的。 在 element 元素上设置 final 属性的默认值。 如果父元素不是架构元素,则不能使用此属性。 该值可以包含 #all 或作为扩展或限制的子集的列表:
    • extension -防止由扩展派生的元素
    • restriction -防止限制产生的元素
    • #all-阻止所有派生元素
    any attributes 可选的。 用非模式命名空间指定任何其他属性。
  • 示例

    以下示例是一个架构,其中包含四个简单元素,分别为字符串,nonNegativeInteger 和日期,分别名为 “fname”,“lname”,“age” 和 “dateborn”:
    <?xml version="1.0"?>
      <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
      
      <xs:element name="fname" type="xs:string"/>
      <xs:element name="lname" type="xs:string"/>
      <xs:element name="age" type="xs:nonNegativeInteger"/>
      <xs:element name="dateborn" type="xs:date"/>
      
    </xs:schema>
    下面的示例是一个架构,该架构具有一个名为 “note” 的复杂类型元素。 “note” 元素包含其他四个简单元素; "to", "from", "heading", 和 "body":
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="note">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="to" type="xs:string"/>
          <xs:element name="from" type="xs:string"/>
          <xs:element name="heading" type="xs:string"/>
          <xs:element name="body" type="xs:string"/>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
    
    </xs:schema>
    此示例与上面的相同,但是在这里我们选择使用ref属性来引用元素名称:
    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    
    <xs:element name="note">
      <xs:complexType>
        <xs:sequence>
        <xs:element ref="to"/>
        <xs:element ref="from"/>
        <xs:element ref="heading"/>
        <xs:element ref="body"/>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
    
    <xs:element name="to" type="xs:string"/>
    <xs:element name="from" type="xs:string"/>
    <xs:element name="heading" type="xs:string"/>
    <xs:element name="body" type="xs:string"/>
    
    </xs:schema>