XSD - schema 元素


XSD – schema 元素是XML Schema文档的最上层元素, 它是XML Schema的命名空间和结构的定义者。在XSD Schema中,包含了所有XML文档中元素和属性的定义规则。下面将详细介绍XSD - schema元素。

在XML Schema中,每一个元素和属性都必须有一个对应的类型。这些类型都定义在schema元素内部,并可以在XML文档中使用。通过在XSD文档中定义和构建类型,我们可以指定XML文档的语义和结构。使用schema元素,我们可以定义数据元素的类型、元素之间的关系和规则、XML文档的命名空间和标记规则等。

定义命名空间:

有时,我们需要为XML文档定义一个唯一的命名空间以保证元素和属性的全局唯一性。这时,我们可以使用schema元素来定义命名空间。XSD - schema元素包括 xmlns 属性,可以在该属性中指定命名空间。在使用任何元素或属性时,需要先指定相应命名空间。

schema属性:

属性 | 描述

  • | - targetNamespace | 设定命名空间的URI elementFormDefault | 设置元素使用的默认命名空间 attributeFormDefault | 设置属性使用的默认命名空间 blockDefault | 指定阻止使用某些属性的规则 finalDefault | 指定不能在子类中使用某些属性的规则

schema 子元素:

元素 | 描述

  • | - import | 在XML文档定义外部导入的类型或元素 include | 将类型或元素包含到某个XSD文档中 complexType | 定义任意复杂度的XML元素类型 simpleType | 定义基本的XML元素类型 element | 定义XML元素及其类型 attribute | 定义XML属性及其类型 group | 用于定义元素的复杂类型组,多个元素可进行组合重用 annotation | 可添加注释

实例:

下面是一个使用XSD - schema元素定义命名空间和元素类型的示例:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://example.com/customer/order"
           xmlns="http://example.com/customer/order"
           elementFormDefault="qualified">

  <xs:element name="order">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="customer" minOccurs="1" maxOccurs="1"/>
        <xs:element ref="items" minOccurs="1" maxOccurs="1"/>
        <xs:element ref="total" minOccurs="1" maxOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="customer">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
        <xs:element name="email" type="xs:string" minOccurs="1" maxOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="items">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="item" minOccurs="1" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/>
              <xs:element name="price" type="xs:float" minOccurs="1" maxOccurs="1"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="total" type="xs:float"/>

</xs:schema>

在上面的示例中,我们首先使用了 xmlns 属性来定义命名空间,然后用 elementFormDefault 属性指定元素使用的命名空间。接下来定义了一个名为 order 的元素,它由 customer, items, 和 total 三个元素组成,它们的类型分别由 customer、items 和 float 元素定义。