• 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>
  • 相关阅读:
    leetcode ——187. 重复的DNA序列
    leetcode——30. 串联所有单词的子串
    leetcode——520. 检测大写字母
    leetcode——686. 重复叠加字符串匹配
    leetcode——459. 重复的子字符串
    leetcode——28. 实现 strStr()
    leetcode——17. 电话号码的字母组合
    leetcode——14. 最长公共前缀
    NAT模式实现局域网物理机与虚拟机的互通访问
    .Net Core项目发布到虚拟机(三)
  • 原文地址:https://www.cnblogs.com/zjm1999/p/10479640.html
Copyright © 2020-2023  润新知