xml约束

一.xml约束存在的原因:

  1)只想保存特定对象的信息,比如只想保存人的信息--><person><person/>,不想保存动物的信息(xml标签是自定义的),这时候就需要约束技术来规定存在元素

   2)常见的xml约束技术有两种,dtd约束和schema约束


二.dtd入门

  1)创建一个后缀名为 .dtd的文件

  2)看xml中有多少个元素,就在dtd文件中写几个  <!ELEMENT>

  3)判断元素是简单元素还是复杂元素

    *复杂元素:有子元素的元素

      <!ELEMENT 元素名称 (子元素)>

    *简单元素:没有子元素

      <!ELEMENT 元素名称 (#PCDATA)>

  4)在xml文件中引入dtd文件

     <!DOCTYPE 根元素名称 SYSTEM "dtd文件的路径">

  5)约束的检验需要myeclipse

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE person SYSTEM "dtd约束示范.dtd">
<person>
    <name>陌上人如玉</name>
    <age>公子世无双</age>
    <cat>天道酬勤</cat>
</person>
<!ELEMENT person (name age cat)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT cat (#PCDATA)>

约束取决于dtd中声明了哪些元素,没声明的元素在xml中会报错


三.使用dtd定义元素

  语法 <!ELEMENT 元素名  约束>

  简单元素:没有子元素的元素

  <!ELEMENT name(#PCDATA)>

              #PCDATA:元素约束为字符串

    EMPTY:元素约束为空

    ANY:元素可以为空也可以为任意

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE person 
[<!ELEMENT person(name,age,sex)>
<!ELEMENT name(#PCDATA)>
<!ELEMENT age EMPTY>
<!ELEMENT sex ANY>
]>
<person>
<naem>张三</naem>
<age></age>
<sex>为了明天更美好的生活</sex>
</person>

  复杂元素:

    <!EMLEMENT person (name,age,sex,school)>

                                  -子元素只能出现一次

    *<!ELEMENT 元素名称 (子元素)>

    *表示子元素出现的次数

        + :表示一次或者多次

        ? :表示零次或者一次

        * : 表示零次或者多次

    *子元素直接使用逗号进行隔开,

        ** 表示元素出现的顺序

    *子元素直接使用 | 隔开

        **表示元素只能出翔其中的任意一个

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE person 
[<!ELEMENT person(name+,age?,sex*)>
<!ELEMENT name(#PCDATA)>
<!ELEMENT age EMPTY>
<!ELEMENT sex ANY>
]>
<person>
<name>张三</name>
<name>李四</name>
<age></age>
<age></age>
<sex>为了明天更美好的生活</sex>
<sex>果子冲鸭</sex>
</person>
原文地址:https://www.cnblogs.com/zjm1999/p/10479640.html