XML--DTD

1.内部DTD

standalone=”yes”说明文档不关联任何外部的文件。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <!DOCTYPE student[
    <!ELEMENT student (id,name)>
    <!ELEMENT id (#PCDATA)>
    <!ELEMENT name (#PCDATA)>
]>
<student>
    <id>id</id>
    <name>name</name>
</student>

2.外部DTD

私有的外部DTD  &&  公开的外部DTD

out_dtd.dtd:

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT alisure (alisure_empty, alisure_any, alisure_text)>
<!ELEMENT alisure_empty EMPTY>
<!ELEMENT alisure_any ANY>
<!ELEMENT alisure_text (#PCDATA)>
<!ATTLIST alisure
	id ID #REQUIRED
	name CDATA "alisure"
	sex (man | woman) "man"
>
<!ENTITY % text " (#PCDATA) ">
<!ELEMENT book (id,name,author) >
<!ELEMENT id %text;>
<!ELEMENT name %text;>
<!ELEMENT author %text;>
 

xml实例:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE alisure SYSTEM "out_dtd.dtd">
<alisure id="id_111" name="ALISURE" sex="man">
	<alisure_empty></alisure_empty>
	<alisure_any>
		<alisure id="id_123" name="alisure" sex="woman">
		<span style="white-space:pre">	</span><alisure_empty></alisure_empty>
			<alisure_any></alisure_any>
			<alisure_text>text</alisure_text>
		</alisure>
		<book>
			<id>id</id>
			<name>name</name>
			<author>author</author>
		</book>
	</alisure_any>
	<alisure_text>text</alisure_text>
</alisure>

3.元素内容

(1)空元素:<!ELEMENT alisure_empty EMPTY>

(2)任意内容的元素:<!ELEMENT alisure_any ANY>

(3)只含文本内容的元素:<!ELEMENT alisure_text (#PCDATA)>

(4)只包含子元素的元素:<!ELEMENT alisure (alisure_empty, alisure_any, alisure_text)>

(5)含指定子元素和文本内容的元素:<!ELEMENT alisure (#PCDATA|alisure1|alisure2)*>

4.元素属性

属性列表(属性类型、属性描述另查表,注意什么是有效的XML名称标记)

<!ATTLIST 元素名称 (属性名称 属性类型 属性描述)+ >

<!ATTLIST alisure
	id ID #REQUIRED
	name CDATA "alisure"
	sex (man | woman) "man"
>
 

5.实体

placeholder:内容的占位符,相当于变量,可以包括单个字符、字符串文本、XML片段

实体分类:参数实体(DTD规则部分)和一般实体(XML文档数据)

(注:现在大部分已经不支持外部一般实体,只能在内部DTD中使用,但外部参数实体可用)

参数实体:

entity_out.dtd:

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
 

entity.dtd:

<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % data " (#PCDATA) ">
<!ENTITY % out_entity SYSTEM "entity_out.dtd">
<!ELEMENT alisure (name,age,sex)>
<!ELEMENT name %data;>
%out_entity;

实例:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE alisure SYSTEM "entity.dtd">
<alisure>
	<name>text</name>
	<age>text</age>
	<sex>text</sex>
</alisure>
 

一般实体:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE alisure[
	<!ELEMENT alisure (#PCDATA)>
	<!ENTITY inf "哈哈 & 呵呵">
	<!ENTITY text "alisure &inf; alisure">
]>
<alisure>&text;</alisure>
 

6.组合使用内外部DTD

(注意:解析器先读取内部的DTD,再读取外部的DTD)

实例:

extral.dtd:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE alisure SYSTEM "extral.dtd"[
	<!ELEMENT sex (#PCDATA)>
]>
<alisure>
	<name>alisure</name>
	<age>21</age>
	<sex>man</sex>
</alisure>

7.条件DTD

IGNORE 和 INCLUDE

(注意:解析器先读取内部的DTD,再读取外部的DTD)

实例:

extral.dtd:

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT alisure (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ENTITY % include "INCLUDE">
<![%include;[
	<!ELEMENT sex (#PCDATA)>
]]>
 

extral.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE alisure SYSTEM "extral.dtd"[
	<!ELEMENT sex (sex_child)>
	<!ELEMENT sex_child (#PCDATA)>
	<!ENTITY % include "IGNORE">
]>
<alisure>
	<name>alisure</name>
	<age>21</age>
	<sex>
		<sex_child>man</sex_child>
	</sex>
</alisure>
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值