| 文章首页 |
|---|
| W3C官方XML命名空间介绍中文版 |
| 1 动机和摘要 |
| 2 声明命名空间 |
| 3 XML的合法名 |
| 4 使用合法名 |
| 5 命名空间在元素和属性中的运用 |
| 6 文件的一致 |
| 附录 |
页5 共8页
在遵循本规格说明的XML文档中,依照如下规则给定元素类型为合法名:4.1 元素类型
[9] STag ::= '<' QName (S属性)* S? '>'合法名作为元素类型的例子:
[10] ETag ::= '</' QName S? '>'
[11] EmptyElemTag ::= '<' QName (S 属性)* S? '/>'
<x xmlns:edi='http://ecommerce.org/schema'>属性是命名空间声明,或者,它们的名字为合法名:
<!-- 元素 'price' 的命名空间是 http://ecommerce.org/schema -->
<edi:price units='Euro'>32.18</edi:price>
</x>
4.2 属性
[12] 属性 ::= NSAttName Eq AttValue合法名作为属性的例子:
| QName Eq AttValue
<x xmlns:edi='http://ecommerce.org/schema'>
<!-- 属性 'taxClass' 的命名空间是 http://ecommerce.org/schema -->
<lineItem edi:taxClass="exempt">Baby food</lineItem>
</x>
4.3 前缀声明
除非是 xml 或 xmlns,命名空间前缀必须在使用前缀的元素的开始标签签或其祖先元素(亦即该元素的内容中出现前缀标注)的命名空间声明属性中声明过。根据定义前缀 xml 与命名空间名字 http://www.w3.org/XML/1998/namespace 相捆绑。前缀 xmlns 仅用于命名空间的捆绑,而其本身并不绑定于任何命名空间名字。在有命名空间声明属性,而该属性不直接出现在 XML 文档实体中,而是由一个外部实体声明缺省属性的情况下,前缀声明的限制可导致操作上的困难。基於无校验验XML处理器的软件不能读这类的声明。许多XML应用程序,大概包括那些对命名空间敏感的程序,都未能调用校验处理器。为使这类的应用程序能正确操作,命名空间必须直接声明,或者,经由缺省属性内部的 DTD 子集声明。
出现在 DTD 中时,元素名字和属性类型同样也以合法名的方式给定:
在声明中的合法名
[13] doctypedecl ::= '<!DOCTYPE' S QName (S
ExternalID)? S? ('[' (markupdecl | PEReference | S)* ']' S?)? '>'
[14] elementdecl ::= '<!ELEMENT' S QName S contentspec S? '>'
[15] cp ::= (QName | choice | seq) ('?' | '*' | '+')?
[16] Mixed ::= '(' S? '#PCDATA' (S? '|' S? QName)* S? ')*'
| '(' S? '#PCDATA' S? ')'
[17] AttlistDecl ::= '<!ATTLIST' S QName AttDef* S? '>'
[18] AttDef ::= S (QName | NSAttName) S AttType S DefaultDecl
如果你喜欢这篇文章,请阅读本文相关的下列内容:
比本文新的文章:
