欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

XML——合法的文档构建DTD

程序员文章站 2022-03-03 17:41:24
...

XML——合法的文档构建DTD

前言

  在使用mybatis过程中我们经常在mapper文件中会遇到下面的代码

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >

  当时只知道引入了mybatis的dtd,所以我们在编写的时候如果不按照它的规范写编译器就会报错,具体怎么实现的,也没关注。

介绍

  DTD(文档类型定义),主要用来定义xml所需的元素和元素使用规范,DTD 可被声明在 XML 文档中,也可作为一个外部引用。(一般我们都是外部引用,单一职责原则)

实现DTD

展示一下目录结构
XML——合法的文档构建DTD

编写dtd文件

  首先我们编写dtd文件。

<?xml version="1.0" encoding="UTF-8" ?>
 		<!--申明元素按顺序且只出现一次-->
        <!--<!ELEMENT root (node1,node2) >--> 
        
        <!--申明root元素 node1+最少出现一次 
        node2*出现零次或多次 
        node3?出现零次或一次 
        (node1|node2)最后必须是node1或node2  -->
        <!ELEMENT root (node1+,node2*,node3?,(node1|node2)) >
        <!ELEMENT node1 (#PCDATA)>  <!--#PCDATA xml可解析的-->
        <!-- 声明属性 #REQUIRED属性是必需的  
        #IMPLIED属性不是必需的 
        #FIXED固定值 -->
        <!ATTLIST node1 
                id ID CDATA #REQUIRED
                name CDATA #IMPLIED
                fixed CDATA #FIXED "0"
                boolean (true|false) #IMPLIED
                >
        <!ELEMENT node2 (#PCDATA)>
        <!ELEMENT node3 EMPTY><!--EMPTY 空元素-->

编写xml文件

  我们通过<!DOCTYPE>引入dtd,root是根节点,SYSTEM指定本地dtd,如果是PUBLIC还要指定publicID,"xml/dtd/my.dtd"是dtd的位置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE root SYSTEM "xml/dtd/my.dtd"> <!--SYSTEM是本地 PUBLIC是远程的-->
<root>
    <node1 id="1" name="node1"></node1>
    <node2></node2>
    <node2></node2>
    <node3/>
    <node1 id=""></node1>
</root>

后言

  除了DTD进行对XML文件规范构建,还有XSD(xml shema definition),请看XML——合法的文档构建XSD