XML DTD备忘

XML中的DTD(Document Type Definition)用来描述xml的结构规则的描述语言,通常用在xml建模上面。

如何定义XML中的节点?

DTD 有两种元素类型:简单性复杂型。简单型就是不包含子节点的元素,如:<xmltest>xmltest</xmltest>。复杂型及为包含子节点的元素,如:<xmlroot><xmlfirstchild>xmlfirstchild</xmlfirstchild></xmlroot>.

简单型元素的定义语法为:<!ElEMENT name (#PCDATA)> 。如:<!ELEMENT xmltest (#PCDATA)>就是对应上面的例子定义的简单元素类型。

复杂型元素的定义语法为:<!ELEMENT name (子节点1,子节点2,....,..)>.如:<!ELEMENT xmlroot (xmlfirstchild)>.

在这里也可以使用通配符来灵活的 描述子节点出现的情况。

? 该子节点出现1次或0次 <!ELEMENT xmlroot (xmlfirstchild,xmlsecondchild?)>

* 出现0次或N次 <!ELEMENT xmlroot (xmlfirstchild,xmlsecondchild*)>

+ 出现1次或N次 <!ELEMENT xmlroot (xmlfirstchild,xmlsecondchild+)>

| 不是必须出现的子节点 <!ELEMENT xmlroot (xmlfirstchild|xmlsecondchild)>

如何定义xml中的属性?

DTD的属性类型:如<xmltest id="001"/> 这个元素的属性用DTD来定义的话如下:<!ATTLIST xmltest id CDATA>

属性类型的定义语法为:<!ATTLIST nodename attname type default_value|#REQUIRED|#IMPLIED>

nodename是指当前定义的属性是在哪个节点中

type是指属性值的类型,共有8种类型,分别为:

CDATA: 可以理解为字符串类型 <xmltest id="abcdef"/>

Enumerated:<xmltest id=book computerbook xmlprograming"/>用空格分隔开的列表

ID:类似于标识列,当定义<xmltest id='1'/>后,就不允许再有<xmltest id='1'/>定义。

IDREF:引用标示列 如有定义<xmltestcollection id="1 2 3"/> 其中的"1"分别是元素<xmltest id="1"/>

IDREFS:引用标示列 如有定义<xmltestcollection id="1 2 3"/> 其中的"1 2 3"分别是元素<xmltest id="1"/>,<xmltest id="2"/>,<xmltest id="3"/>

ENTITY: 导入类型 <!ATTRIBUTE xmltest id ENTITY> 引用这类元素:<!ENTITY test SYSTEM http://www.abc.com/abc.jpg>

ENTITIES:导入类型集合 <!ATTRIBUTE xmltest id ENTITYs>

NMTOKEN:

NMTOKENS:

NOTATION

如何能更有效率的开发dtd文档?

实体类型:DTD中有两类实体一般实体和参数实体。这里的实体类似于c语言中的宏

一般实体作用于内容元素(xml文档),参数实体作用于定义元素(dtd文档内容)

一般内部实体:<!ENTITY bookname "Xml Programming">

<book>

<bookid>1<bookid/>

<bookname>&bookname;</bookname>

</book>

一般外部实体:<!ENTITY book SYSTEM "book.xml">

<books>

<book>

<bookid>1<bookid/>

<bookname>xml programming</bookname>

</book>

&book;

</books>

参数内部实体:<!ENTITY % book "(bookid,bookname)">

使用该实体:<!ELEMENT book %book;>

参数外部实体:<!ENTITY % book SYSTEM "book.dtd">

使用该实体:<!ELEMENT books (book)+>

%book;

如何在xml文件用引用dtd文档?

有三中方法:1.嵌入式

<!DOCTYPE books[

<!ELEMENT books(book)+>

<!ELEMENT book(bookid,bookname)>

]>

<books>

<book><bookid>1</bookid></bookname></book>

</books>

2.外部引用式

<!DOCTYPE books SYSTEM "books.dtd">

3.混合式

<!DOCTYPE books SYSTEM "books.dtd" [

<!ELEMENT books(book)+>

<!ELEMENT book(bookid,bookname)>

] >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值