XML知识点滴(8)

来源:互联网 时间:1970-01-01


XML知识点滴(8)

(引用文章,版权归作者,如需删除请联系我)

n 如果一个属性需要引用文档中多个ID属性的属性值,那么可以把它声明为具有IDREFS类型。IDREFS类型的属性值是一系列以空格分隔的ID类型的属性值,而且必须与文档中已有的ID类型属性值相匹配。

<?xml version="1.0" encoding="gb2312"?>

<!DOCTYPE library[

<!ELEMENT library (books,records)>

<!ELEMENT books (book+)>

<!ELEMENT book (#PCDATA)>

<!ELEMENT records (item*)>

<!ELEMENT item (date,person)>

<!ELEMENT date (#PCDATA)>

<!ELEMENT person EMPTY>

<!ATTLIST book bookid ID #REQUIRED>

<!ATTLIST person name CDATA #REQUIRED>

<!ATTLIST person borrowed IDREFS #REQUIRED>

]>

<library>

<books>

<book book>XML详解</book>

<book book>.NET从入门到精通</book>

<book book>ASP.NET实例编程</book>

</books>

<records>

<item>

<date>2007-8-7</date>

<person borrowed="b-1-1 b-1-2"/>

</item>

<item>

<date>2007-8-8</date>

<person borrowed="b-1-1 b-1-2 b-1-3"/>

</item>

</records>

</library>

n ENTITY、ENTITIES

1) ENTITY类型的属性把外部的二进制数据链接到文档。

2) ENTITY类型的属性值是在DTD中声明的未分析的一般实体的名称。

例如,我想在文档中包含一幅外部的图象,可以声明一个ENTITY类型的属性来引入 图象,如下:

<!ATTLIST image src ENTITY #REQUIRED>

在DTD中,还需要声明一个外部的一般实体:

<!ENTITY logo SYSTEM “http://localhost/logo.gif “ NDATA gif>

关键字NDATA表示该实体是一般未分析的实体,后面的gif是记号名称(natation name),说明实体的数据格式或指定一个外部的处理程序。记号gif声明如下:

<!NOTATION gif SYSTEM “iexplore.exe”>

在XML文档中,可以在src属性中引用图像:

<image src=”logo”/>

这句代码将http://localhost/logo.gif文件与image元素关联在一起。

n ENTITIES类型和IDREFS类型的使用是类似的,它的值是多个以空格分隔的ENTITY类型的属性值。

例如,我们可以再添加一个实体声明:

<!ENTITY banner SYSTEM “http://localhost/banner.gif” NDATA gif>

然后将元素image的属性声明改为:

<!ATTLIST image src ENTITYS #REQUIRED>

在XML文档中,通过src属性引用两幅图像。

<image src=”logo banner”>

n NMTOKEN、NMTOKENS

1) NMTOKEN (name token),名称标记是任何命名字符的混合体。

2) NMTOKEN类型的属性值是受限制的文本,只能包含名称字符,不能包含空白字符。

3) XML名称不能以除字母、下划线之外的其他字符开头,而名称标记没有这个限制。

4) 所有的XML名称都是名称标记,但不是所有的名称标记都是XML名称。

为了限制文件名属性的取值不能有空格,我们可以采取如下的属性声明方式:

<!ATTLIST file name NMTOKEN #REQUIRED>

在文档中,可以按如下方式使用name属性:

<file name=”XML讲座.doc”>

NMTAOKENS类型与IDREFS和ENTITIES类似,它的值由多个名称标记构成,每个名称必须是有效的名称标记,它们之间以空格分隔。例如在DTD中声明:

<!ATTLIST files name NMTOKENS #REQUIRED>

在文档中使用:

<files name=”XML讲座.doc CSharp讲座.DOC”/>

有时候,你可能会用NMTOKEN类型的属性来让用户输入特定的值,但是要注意的是:在使用NMTOKEN类型的属性时,其值是否有效,需要文档的作者自己去保证,XML处理器只能确保名称是合法的(也就是检查名称中没有空格),而不会检查值的有效性。

n NOTATION

NOTATION类型属性的值是在记号声明中的名称。

<?xml version="1.0" encoding="gb2312"?>

<!DOCTYPE webpage[

<!ELEMENT webpage (image)>

<!ELEMENT image (src)>

<!ELEMENT src (#PCDATA)>

<!NOTATION gif SYSTEM "image/gif">

<!NOTATION jpg SYSTEM "iexplorer.exe">

<!ATTLIST image type NOTATION (gif|jpg) #REQUIRED>

]>

<webpage>

<image type="jpg">

<src>http://localhost/images/photo.jpg</src>

</image>

</webpage>



相关阅读:
Top