zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    请求浏览器使用chrome查看http请求
    输入数据问题一百一十二:C语言合法标识符(2)
    方法调用代理代码改进
    串字符串问题一百一十三:Palindromes _easy version
    删除系统Win7系统盘越来越小,系统盘清理技巧
    配置编译linux下QT程序编译时的错误:QMAKESPEC has not been set, so configuration cannot be deduced.
    整数实例java处理大整数
    触发器课程SQL Server 知识梳理九 触发器的使用
    输出整数回溯法解决素数环
    类注解Spring注解自动注入Bean
  • 原文地址:https://www.cnblogs.com/zjm1999/p/10479640.html
Copyright © 2011-2022 走看看