SVG——新一代Web设计及互动媒体的革新
首页 SVG入门 XML教程 W3C官方XML命名空间介绍中文版 - 4 使用合法名

W3C官方XML命名空间介绍中文版 - 4 使用合法名

文章首页
W3C官方XML命名空间介绍中文版
1 动机和摘要
2 声明命名空间
3 XML的合法名
4 使用合法名
5 命名空间在元素和属性中的运用
6 文件的一致
附录
  在遵循本规格说明的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