computer 版 (精华区)

发信人: lyl (一条四处游荡的鱼), 信区: network
标  题: [范文][XML]W3C建议XML 1.0中文版说明(五) (转载) 
发信站: 听涛站 (Fri Apr 28 21:11:52 2000), 转信

发信人: DDG (导弹驱逐舰~雾的季节), 信区: XML
标  题: [范文][XML]W3C建议XML 1.0中文版说明(五) (转载)
发信站: BBS 水木清华站 (Thu Apr  6 13:29:31 2000)

【 以下文字转载自 New_board 讨论区 】
【 原文由 starw 所发表 】
3. 逻辑结构
每个XML文档包含一个或多个元素,它们的边界用起始标记和结束标记定界,或者,
对于空元素,用一个空元素标记分隔。每一个元素有一个用名字标识的类型,有时
称之为它的"通用标识符(generic identifier)"(GI),同时它可以有一个属性说明
(attribute specification)集。每个属性说明有一个名字和一个值。

元素
[39] element ::=  EmptyElemTag | STag content ETag
  [ WFC: 元素类型匹配 ] [  VC: 元素有效 ]

除了那些开头匹配(('X'|'x')('M'|'m')('L'|'l'))的名字保留用于本规范的此版本
和后继版本的标准化外,本规范不对元素类型和属性的语义,用法和名字(语法之外)
作出限制。

格式约束: 元素类型匹配
元素结束标记中的Name必须和起始标记中的元素类型相匹配。

有效性约束: 元素有效
如果有一个与elementdecl相匹配的声明的Name与元素类型相匹配,且下述之一成立
时,称此元素是有效的:

1. 此声明与EMPTY相匹配,同时此元素没有内容。
2.此声明与children相匹配,同时子元素的序列属于内容模型中的正则表达式所产
生的语言,在每对子元素间允许有空白域(匹配非终结符S的字符)。
3.此声明与Mixed相匹配,同时内容由其类型匹配内容模型中的名字的字符数据和
子元素组成。
4.此声明与ANY相匹配,同时每个子元素的类型均已声明。
3.1 起始标记,结束标记和空元素标记
每一个非空XML元素以一个起始标记作为开始的标记。

起始标记
[40]  STag ::=  '<' Name (S Attribute)* S? '>' [  WFC: 唯一的属性说明 ]
[41]  Attribute ::=  Name Eq AttValue [  VC: 属性值类型 ]
        [  WFC: 无外部实体引用 ]
        [  WFC: 在属性值中没有< ]


起始标记和结束标记中的Name给出了元素的类型。Name-AttValue对被统称为元素的
属性说明,其中每一对中的Name被称为属性名,AttValue的内容(在定界符'或"间的
文本)被称为属性值。

格式约束: 唯一的属性说明
一个属性名只能在同一个起始标记或空元素标记中出现一次。

有效性约束: 属性值类型
属性必须被声明,其值必须是所声明的类型。(属性类型参见"3.3 属性表声明"。)


格式约束: 无外部实体引用
属性值不能包含对外部实体直接或间接的实体引用。

格式约束: 在属性值中没有<
在一个属性值中直接或间接引用的实体的置换文本(除了"&lt;")不能包含<。

起始标记的一个例子:

<termdef id="dt-dog" term="dog">

由一个起始标记开始的每一个元素必须用一个结束标记标记其结束,结束标记中的
名字必须与起始标记中给出的元素类型相同:

结束标记
[42]  ETag ::=  '</' Name S? '>'


结束标记的一个例子:

</termdef>

在起始标记和结束标记中的文本被称为元素的内容:

元素的内容
[43]  content ::=  (element | CharData | Reference | CDSect | PI | Comme
nt)*

如果一个元素为空,它必须表示为一个起始标记紧跟一个结束标记或空元素标记。
一个空元素标记采用一种特殊的形式:

空元素标记
[44]  EmptyElemTag ::=  '<' Name (S Attribute)* S? '/>' [  WFC: 唯一的属
性说明 ]


不论元素是否用关键字EMPTY声明,空元素标记都可以用于任何没有内容的元素。出
于互操作性考虑,空元素必须用于,且只能用于声明为EMPTY的元素。

空元素的例子:

<IMG align="left"
 src="http://www.w3.org/Icons/WWW/w3c_home" />
<br></br>
<br/>

3.2 元素类型声明
出于验证的目的,可以用元素类型和属性表声明限制XML文档中元素的结构。元素类
型声明限制了元素的内容。

元素类型声明通常限制了子元素的类型。由用户选择,当声明提到的元素类型没有
相应的声明时,XML处理器可以给出警告,但这不是一个错误。

元素类型声明形式如下:

元素类型声明
[45]  elementdecl ::=  '<!ELEMENT' S Name S contentspec S? '>' [  VC: 唯
一的元素类型声明 ]
[46]  contentspec ::=  'EMPTY' | 'ANY' | Mixed | children


其中Name给出了所声明的元素类型。

有效性约束: 唯一的元素类型声明
元素类型只能声明一次。

元素类型声明的例子:

<!ELEMENT br EMPTY>
<!ELEMENT p (#PCDATA|emph)* >
<!ELEMENT %name.para; %content.para; >
<!ELEMENT container ANY>

3.2.1 元素内容
当某一类型的元素只能包含用可选空白域(匹配非终结符S)分隔的子元素(无字符数
据)时,此元素类型具有元素内容。在这种情况下,有内容模型作为类型限制之一,
内容模型是决定子元素类型和子元素出现顺序的一种简单语法。此语法用内容粒子
(cp)构建,内容粒子由名字,内容粒子的选择表(choice list)或内容粒子的序列表
(sequence list)组成:

元素内容的模型
[47]  children ::=  (choice | seq) ('?' | '*' | '+')?
[48]  cp ::=  (Name | choice | seq) ('?' | '*' | '+')?
[49]  choice ::=  '(' S? cp ( S? '|' S? cp )* S? ')' [  VC: 严格的组/PE嵌
套 ]
[50]  seq ::=  '(' S? cp ( S? ',' S? cp )* S? ')' [  VC: 严格的组/PE嵌套
 ]


其中每一个Name是可以作为子元素的元素的类型。选择表中出现的任意内容粒子在
元素内容中允许出现的位置对应于选择表在语法中的位置。序列表中出现的所有内
容粒子必须以相同的顺序出现在元素内容中。在名字或表之后的可选字符(optiona
l character)决定了表中元素或内容粒子可以出现一次或多次(+),还是零次或多次
(*),或是零次或一次(?)。没有这样一个操作符意味着元素或内容粒子必须恰好出
现一次。这种句法和意义和本规范中的产生式中所使用的相同。

当且仅当一个元素的内容可以通过满足内容模型中的选择,序列和重复操作符得到,
并且内容中的每一个元素与内容模型中的一种元素类型相匹配时,称此元素的内容
与一个内容模型相匹配。出于兼容性考虑, 如果文档的某个元素可以和内容模型中
的一种元素类型多次匹配,这是一个错误。 更详细的信息参见"E. 确定型内容模型
".

有效性约束: 严格的组/PE嵌套
参数实体的置换文本用括号括起的组严格嵌套。即,如果choice,seq或Mixed成分
的开始或结束括号出现在某个参数实体的置换文本中,两者必须同在此置换文本中。
出于互操作性考虑,如果一个参数实体引用出现在choice,seq或Mixed成分中时,
它的置换文本不应为空,同时其置换文本的第一个和最后一个非空字符不应为一个
连接符(|或,)。

元素内容模型的例子:

<!ELEMENT spec (front, body, back?)>
<!ELEMENT div1 (head, (p | list | note)*, div2*)>
<!ELEMENT dictionary-body (%div.mix; | %dict.mix;)*>
3.2.2 混合型内容(Mixed Content)
当某元素类型可以包含字符数据,其间可以随意穿插子元素时,称此元素类型具有
混合型内容。在这种情况下,对子元素的类型可能有所限制,但对它们的次序和出
现次数没有限制:

混合型内容声明
[51]  Mixed ::=  '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*'  | '(' S? '#
PCDATA' S? ')'
 [  VC: 严格的组/PE嵌套 ] [  VC: 无重复类型 ]


其中Name给出了子元素的元素类型。

有效性约束: 无重复类型
同一名字在单个混合型内容声明中只能出现一次。

混合内容声明的例子:

<!ELEMENT p (#PCDATA|a|ul|b|i|em)*>
<!ELEMENT p (#PCDATA | %font; | %phrase; | %special; | %form;)* >
<!ELEMENT b (#PCDATA)>

--
        山居且喜远纷华,俯仰乾坤野性赊。
                千载勋名身外影,百岁荣辱镜中花。

        金 琢 倒秋将暮,蕙径萧瑟日且斜。
                闻道五湖烟境好,何   蝮业鐾∩场?


--
与其相濡以沫,不若相望于江湖。

http://10.23.31.91/
http://10.23.31.91:9999

※ 来源:.听涛站 cces.net.[FROM: 匿名天使的家]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.980毫秒