dtd约束

6、dtd的快速入门
    创建一个文件 后缀名 .dtd
    步骤:
        (1)看xml中有多少个元素,有几个元素,在dtd文件中写几个<!ELEMENT>
        (2)判断元素是简单元素还是复杂元素
            复杂元素:有子元素的元素
                <!ELEMENT 元素名称 (子元素)>
            简单元素:没有子元素
                <!ELEMENT 元素名称 (#PCDATA)>
                (#PCDATA):约束元素是字符串类型
        (3)需要在xml文件中引入dtd文件
            <!DOCTYPE 根元素名称 SYSTEM "dtd文件路径">
    打开xml文件使用浏览器打开的,浏览器只负责校验语法,不负责校验约束
    如果想要校验xml的约束,需要使用工具
    打开开发工具
        创建一个项目
        创建一个xml文件和dtd文件
        在xml中引入dtd后,只能出现所约束中的,多写的会提示出错
7、dtd的三种引入方式
    (1)引入外部的dtd文件
        <!DOCTYPE 根元素名称 SYSTEM "dtd文件路径">
    (2)使用内部的dtd文件
    (3)使用外部的dtd文件(网络上的dtd文件)
        <!DOCTYPE 根元素名称 PUBLIC "DTD名称" "DTD文档的URL">
        学到框架 struts2 使用配置文件 使用外部的dtd文件
8、使用dtd定义元素
    语法:<!ELEMENT 元素名 约束>
    简单元素:没有子元素
        <!ELEMENT 元素名称 (#PCDATA)>
        (#PCDATA):约束元素是字符串类型
        EMPTY:元素为空
        ANY:任意
    复杂元素:有子元素的元素
        <!ELEMENT 元素名称 (子元素)>
            子元素只能出现一次
        表示子元素出现的次数
            +:表示一次或者多次
            ?:0次或者一次
            *:0次、一次或者多次
        子元素之间用逗号隔开
            表示元素的出现顺序
        子元素之间使用|隔开
            表示元素只能出现其中的任意一个
        <!ELEMENT person (name+|age?|sex*|school)>
9、使用dtd定义属性
    语法:<!ATTLIST 元素名称 属性名称 属性类型 属性的约束>
    属性类型
        CDATA:字符串
        枚举:表示只能在一定的范围内出现值,但是只能每次出现其中的一个
            (aa|bb|cc)
        ID:值只能是字母和下划线开头
    属性的约束
        #REQUIRED:属性必须存在
        #IMPLIED:属性可有可无
        #FIXED:表示一个固定值 
        直接值:不写属性,使用直接值
            写了属性,使用设置那个值
10、实体的定义
    语法:<!ENTITY 实体名称 “实体的值”>
    使用实体 &实体名称;
    注意:
        定义实体需要写在内部的dtd里面
        如果写在外部的dtd里面,在某些浏览器下,内容得不到
11、xml的解析简介(写java代码)
    xml标记型文档
    js使用dom解析标记型文档
        根据html的层级结构,在内存中分配一个树形结构,把html的标签,属性和文本都封装成对象
        document对象、element对象、属性对象、文本对象、Node节点对象
    xml的解析方式(技术):dom和sax
        dom方式解析:
            根据xml的层级结构,在内存中分配一个树形结构,把html的标签,属性和文本都封装成对象
            缺点:如果文件过大,造成内存溢出
            优点:很方便实现增删改操作
        sax方式解析:
            采用事件驱动,边读边解析
                从上到下,一行一行的解析,解析到一个对象,返回该对象名称
            缺点:不能实现增删改操作
            优点:如果文件过大,不会造成内存溢出,方便实现擦查询操作
    解析xml的解析器有jaxp,dom4j(实际开发),jdom
18、jaxp的api的查看
    jaxp是javase的一部分
    jaxp解析器在jdk的javax.xml.parsers包里
        四个类:分别是针对dom和sax解析器使用的类
        dom:
            DocumentBuilder:解析器类
                抽象类,不能new
                实例可以从DocumentBuilderFactory.newDocumentBuilder()方法获得
                一个方法,可以解析xml parse(“xml路径”) 返回的是document真个文档
                ducument是一个接口,父节点是Node。如果找不到方法可以去Node里面找

            DocumentBuilderFactory:解析器工厂
                抽象类,不能new
                newInstance()获取DocumentBuilderFactory的实例  

        sax:
            SAXParser:解析器类
            SAXParserFactory:解析器工厂
19、使用jaxp实现查询操作
    查询xml中所有的name元素的值
20、使用jaxp添加节点
    在第一个p1末尾添加<sex>nv</sex>
21、使用jaxp修改节点
    修改第一个p1下面的sex内容是nan
22、使用jaxp删除节点
    删除sex节点
23、使用jaxp遍历节点
    把xml中的所有元素名称打印出来

猜你喜欢

转载自blog.csdn.net/cameles/article/details/80305538
DTD