pattern属性
前面提到过的, DTD ( Document Type Definition ,文档类型定义)就是定义 XML 文档中元素的结构和内容等。其实 DTD 就相当于 XML 中的“词汇”和“语法”,不同的行业可以定义自己的“词汇”和“语法”,以利于解析器验证 XML 文档的有效性,并且这样也利于行业中和行业之间的交流。就相当于只有当两个人对各自说出的词汇都理解对方的时候才能有顺利的交流。这其实就是对 XML 文档使用元素的定义的以层抽象,把它的定义独立出一个文件,以利于对信息的隐藏和扩展。这也可以把它想象成程序语言,比如 C# 中的接口的定义。把 DTD 文件想象成一个接口,而引用这个 DTD 文件的 XML 文档是这个接口的实现类,只要了解了这个 DTD 文件,就大致知道了和这个 DTD 文件相链接的 XML 文档的一些框架信息。
DTD 文件也可以看成是一系列 XML 文档的模板,它定义了相关 XML 文档的元素,属性,排列方式(元素,属性等),元素的内容类型,以及元素的层次结构等。
DTD 中元素的声明
<;!ELEMENT 元素名(元素描述) >;
这里主要介绍元素描述,元素的描述包含两部分:
1.            如果元素是简单元素,即该元素不包含子元素,则描述部分是针对该元素的内容的限制或是规定。这种限制的描述可以是:
#PCDATA :元素的内容只能是可解析的文本数据。
<;!ELEMENT 元素名 (#PCDATA)>;
EMPTY :元素内容必须为空,但可以包含属性。
<; ! ELEMENT 元素名 EMPTY>;
2.            如果元素是复杂元素,即该元素包含子元素,则元素描述包含对子元素名的列表(可用正则表达式表达)。元素描述的括号表示内容描述的组合。
<;!ELEMENT book(title, author+, summary | content)>;
正则表达式用法:
( ) 给元素分组(A | B | C), (D | E), F
|                          在列出的对象中选择一个                      (A | B)
*          对象允许出现 0 到多次                            (A*)
+          对象应出现 1 到多次                                    (A+)
对象可以出现 0 到 1 次                (A?)
, 对象以指定顺序出现(A, B, C)
同时,如果不能确定一个元素是否含有子元素或是只能包含文本,那么可以将元素定义为混合类型的。简单的混合类型可以是:
<;!ELEMENT 元素名 ANY>;
表明元素可以定义为以上的任意一种类型。
典型的,可以将元素的定义通过“ , ”和“ | ”组合起来。如:
<;!ELEMENT 元素名 (#PCDATA | EMPTY | (A*, B?, C+ | D))>;
DTD 中属性的声明
<;!ATTLIST 元素名属性名称属性类型属性特点… >;
在 DTD 中,元素中的属性是单独定义的,这里主要介绍属性的类型和属性特点。
属性类型:
1. CDATA            表示属性的值只能是可解析的文本数据。
<;!ATTLIST 元素名属性名 CDATA #REQUIRED>;
2. 枚举值表示属性取值是在()中定义的值
<;!ATTLIST 元素名性别 ( 男 | 女 ) #REQUIRED>;
3. ID                          表示该属性的取值必须是唯一的,可以用来作为该元素的唯一标识符。并且该值(标识符)必须以字母开头。
<;!ATTLIST A ID ID # REQUIRED>;
则下列定义是合法的:
<;A ID=”a001”>;content A<;/A>;
下列定义是不合法的:
<;A ID=”001”>;content A<;/A>;
4. IDREF/IDREFS 表示属性值指向文档中其他声明的 ID 类型值。
<;!ATTLIST people perID ID #REQUIRED
parentID IDREFS #IMPLIED>;
则有如下的 XML 文件定义:
<;people perID=”p1” />;
<;people perID=”p2” />;
<;perple perID=”p3” parentID=”p1 p2” />;
对 IDREFS 中的不同的 ID 的定义,在 XML 文件中要空格空开。
5. ENTITY/ENTITIES 表示该属性的值为一个或多个已定义的实体定义,多个实体之间用空格空开。
<;!ATTLIST 元素名属性名 ENTITY #IMPLIED>;
6. NMTOKEN/NMTOKENS 表示属性的值只能由字母、数字、下滑下、句点、冒号、连接符( - )这些符号或多个这些符号构成,多个符号之间用空格空开。
<;!ATT:LIST 元素名属性名 NMTOKENS #REQUIRED>;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。