zoukankan      html  css  js  c++  java
  • xml约束(dtd)

    什么xml使用约束? 使用约束xml文档 --- 元素内容格式更加规范
    如果企业中xml没有使用约束 ------ 通过程序生成xml和解析xml时,不使用约束,代码更加简单

    DTD

    1、编写数据xml --- books.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <books>
        <book>
            <name>java高效编程</name>
            <price>85</price>
        </book>
    </books>

    2、编写dtd文件

    * 为文档每一个元素(不同名称) <!ELEMENT
    语法 <!ELEMENT 元素名称 子元素>
    元素内部文本 #PCDATA

    <?xml version="1.0" encoding="UTF-8"?>
    <!ELEMENT books (book)>
    <!ELEMENT book (name,price)>
    <!ELEMENT name (#PCDATA)>
    <!ELEMENT price (#PCDATA)>

    3、将xml文件与dtd文件关联起来

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE books SYSTEM "books.dtd">
    <books>
        <book>
            <name>java高效编程</name>
            <price>85</price>
        </book>
    </books>

    DTD与xml关联三种方式

    1、内部DTD ----- 语法 <!DOCTYPE 根元素 []>
    2、外部DTD (引用本地DTD) ----- 语法 <!DOCTYPE 根元素 SYSTEM "本地DTD文件位置" >
    3、公共DTD (引用网络上DTD) <!DOCTYPE 文档根结点 PUBLIC "DTD名称" "DTD文件的URL">
    * 公共DTD 使用 名称 W3C规范官方组织规定的

    元素(ELEMENT)定义
    * 内容特点符合含义
    () 子元素、分组
    , 代表子元素顺序
    + * ? ---- 正则表达式 + 1到多个 、* 任意个(0到多个)、 ? 0或者1个
    | 多选一

    特殊元素内容:文本类型内容 #PCDATA 子元素内容如果为空 EMPTY


    属性(ATTLIST)定义
    语法:<!ATTLIST 元素名称 属性列表 >
    属性列表:
    属性名称 类型 约束
    属性名称 类型 约束
    属性名称 类型 约束
    属性名称 类型 约束

    属性类型
    1、CDATA 文本类型属性
    2、(值1|值2|值3 ) 三个值选一个
    3、ID 表示属性值唯一

    约束
    1、#REQUIERD 属性必须
    2、#IMPLIED 属性可选
    3、fixed value 属性值固定
    4、default 默认值

    实体(ENTITY)定义
    对于xml数据内容重复,可以抽取实体
    语法:<!ENTITY 实体名称 "实体内容" >

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- 使用内部DTD约束XML [] 内部编写DTD内容-->
    <!DOCTYPE books [
        <!ELEMENT books (book+)>
        <!ELEMENT book (name,(number|price),publish)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT price EMPTY>
        <!--ID属性 不能以数字开始 -->
        <!--ID 必须且唯一-->
        <!--author 金庸古龙二选一,默认金庸-->
        <!ATTLIST book 
        
            bid ID #REQUIRED
            author (金庸|古龙) "金庸"
        >
        <!ELEMENT publish (#PCDATA) >
        <!-- 将公共的重复内容 提取实体-->
        <!ENTITY itcast "传智播客 JavaEE" >
    ]>
    <books>
        <book bid="b100" author="古龙">
            <name>java</name>
            <price />
            <publish>&itcast;</publish>
        </book>
        <book bid="b200">
            <name>java</name>
            <price />
            <publish>&itcast;</publish>
        </book>
    </books>

    运行结果:

  • 相关阅读:
    ASP.NET——基础 14、Server
    ASP.NET——基础 15、HttpHandler
    ASP.NET——基础 2、ViewState
    MYSQL VS2010 中文乱码问题
    ASP.NET——基础 10、Web开发的一些基本原则1
    数据结构与算法 2、单向/双向链表
    C#操作XML日志
    web开发入门级学习经验(菜鸟级)
    笔记:键盘键值一览表(JS)
    笔记:JS事件的捕获与冒泡
  • 原文地址:https://www.cnblogs.com/jianfengyun/p/3823346.html
Copyright © 2011-2022 走看看