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

XML约束

程序员文章站 2022-03-13 08:05:05
1 XML约束 1.1 DTD语法自称一派,可读性较差 1.2DTD引入的方式 stus_copy.dtd 1.2Schema其实就是一个xml,使用xml的语法规则,xml解析器 解析起来比较方便,Schema约束文本内容比DTD内容还要多,没有真正意义替代DTD 1.2.1命名空间的作用 一个x ......

1、概念

一个用来约束XML文档的书写规范的文件

2、常用的约束

  • XML DTD
  • XML Schema

3、DTD约束

① 概念

DTD(Document Type Definition),文档类型定义

② 语法

(1)元素定义

使用 ELEMENT 来声明一个XML元素

<!ELEMENT 父标签 (子标签 | 子标签 | 子标签)>
用 | 分割表示子标签只能是其中一个

<!ELEMENT 父标签 (子标签, 子标签, 子标签)>
用 逗号 分割表示子标签的顺序必须和声明时的一致

<!ELEMENT 父标签 (子标签 | 子标签 | 子标签)*>
子标签的顺序可以是无序的

使用通配符来控制子标签出现的次数

<!ELEMENT 父标签 (子标签?)>
子标签出现零次或一次

<!ELEMENT 父标签 (子标签*)>
子标签出现零次或多次

<!ELEMENT 父标签 (子标签+)>
子标签出现一次或多次

如果标签没有子标签(自结束标签),则可以声明为 EMPTY

<!ELEMENT 标签名 EMPTY>

如果不限制标签的内容,则可以使用 ANY

<!ELEMENT 标签名 ANY>

如果子标签的内容需要解析器来解析,则可以使用 #PCDATA【被解析的字符数据(Parsed Character Data)】

<!ELEMENT 标签名 (#PCDATA)>

(2)属性定义

使用 ATTLIST 来声明元素的属性

<!ATTLIST 元素名
属性名称 属性类型 属性类型 默认值
属性名称 属性类型 属性类型 默认值
>

属性类型:
CDATA           值为字符数据 (character data)【不会被解析器解析的文本】
(en1|en2|..)    此值是枚举列表中的一个值

属性值说明有3类:
#REQUIRED         属性值是必需的
#IMPLIED          属性不是必需的
#FIXED "value"    属性值是固定的

默认值:
注意:需要用引号引起来;如果属性类型是#REQUIRED,则不允许有默认值

③ 引入方式

  1. 内部引入:

    直接在XML文件内编写约束(一般不用)

    示例

    <?xml version="1.0" encoding="UTF-8"?>
    
    <!DOCTYPE animal [
    <!ELEMENT animal (#PCDATA)>
    
    <!ATTLIST animal
    name CDATA #REQUIRED
    >
    ]>
    
    <animal name="Tom">Cat</animal>
    
  2. 外部引入:

    DTD约束是一个独立的文件,并在XML中引入

    <!DOCTYPE 文档根节点 SYSTEM "DTD文件路径">
    

    DTD文件在本地

    <!DOCTYPE 文档根节点 PUBLIC "DTD名称" "DTD文件的URL路径">
    
    例如:
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    

    DTD文件在网络上

④ 示例一

XML-DTD文件

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT person (name?, age?, gender?, live?)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT age EMPTY>
<!ATTLIST age
value CDATA #REQUIRED
>

<!ELEMENT gender EMPTY>
<!ATTLIST gender
value (man | woman) #REQUIRED
>

<!ELEMENT live EMPTY>
<!ATTLIST live
value CDATA #FIXED "yes"
>

XML文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE person SYSTEM "person.dtd">
<person>
    <name>Tom</name>
    <age value="14" />
    <gender value="man" />
    <live value="yes" />
</person>

本文地址:https://blog.csdn.net/adsl624153/article/details/111145746

相关标签: XML dtd schema