xml约束

如果想要约束xml中的标签内容,可以使用下面两种方式编写约束内容:

dtd

dtd的全称是document Type Definition,即文档类型定义。
dtd的分类:

  • 内部dtd:在xml内部编写dtd
  • 外部dtd:在外部文件中编写dtd,然后再引入到xml中
    • 引入本地dtd文件:<!DOCTYPE students SYSTEM "student.dtd">
    • 引入网络dtd文件:<!DOCTYPE students PUBLIC "名称空间" "student.dtd">

dtd中的约束不严谨,如果想要编写出更严谨的约束文件,可以使用下面这个。

schema

使用schema约束更加严谨,它克服了dtd的局限性。其实schema本身也是一个xml文件,但是通常是以.xsd文件名结尾。
如下是一个web项目中的web.xml文件,其中使用了schema作为约束。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
    <display-name>xml</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
</web-app>

下面是web-app_2_5.xsd的schema约束文件的部分代码:

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

<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://java.sun.com/xml/ns/javaee"
        xmlns:javaee="http://java.sun.com/xml/ns/javaee"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified"
        attributeFormDefault="unqualified"
        version="2.5">
  <xsd:annotation>
    <xsd:documentation>
      @(#)web-app_2_5.xsds    1.62 05/08/06
    </xsd:documentation>
  </xsd:annotation>

...
...

以上两个约束xml的方式dtd和schema,只需做了解即可。