Schema

Schema

和DTD的区别

入门案例

<?xml version="1.0" encoding="UTF-8" ?>
<persons>
    <person>
        <name>张三</name>
        <age>23</age>
    </person>
</persons>

创建schema约束

  1. 创建一个文件,这个文件的后缀名为.xsd
  2. 定义文档声明
  3. schema文件的根标签为:<schema>
  4. <schema>中定义属性:
    • xmlns=http://www.w3.org/2001/XMLSchema
  5. <schema>中定义属性:
    • targetNamespace=唯一的url地址
  6. <schema>中定义属性:
    • elementFormDefault="qualified"
      • 表示当前schema文件是一个质量良好的文件
  7. 通过element定义元素
  8. 判断当前元素是简单元素还是复杂元素
<?xml version="1.0" encoding="UTF-8" ?>
<schema
        xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.itheima.cn/javase"
        elementFormDefault="qualified"
>
    <!--定义persons复杂元素-->
    <element name="persons">
        <complexType>
            <sequence>
                <!--定义person复杂元素-->
                <element name="person">
                    <complexType>
                        <sequence>
							<!--定义name和age简单元素-->
                            <element name="name" type="string"></element>
                            <element name="age" type="string"></element>
                        </sequence>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>

引入Schema约束

  1. 在根标签上定义属性
    • xmlns="<http://www.w3.org/2001/XMLSchema-instance>"
  2. 通过xmlns引入约束文件的命名空间
  3. 给某一个xmlns属性添加一个标识,用于区分不同的名称空间
    • 格式为:xmlns:标识=“名称空间地址”,
    • 标识可以是任意的,但是一般取值都是xsi
  4. 通过xsi:schemaLocation指定名称空间所对应的约束文件路径
    • 格式为:xsi:schemaLocation="名称空间url 文件路径"

第一个xmlns是告诉这个文件,是被别人约束的,第二个xmlns是约束文件的名称空间

<?xml version="1.0" encoding="UTF-8" ?>

<persons
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="http://www.charley.cn/javase"
        xsi:schemaLocation="http://www.charley.cn/javase person.xsd"
>
    <person>
        <name>张三</name>
        <age>23</age>
    </person>
</persons>

Schema定义属性

通过attribute定义,如:

<attribute name="id" type="string" use="required"></attribute>

required(必须的)

optional(可选的)