XML入门教程-XML名称空间详细介绍

黄舟
Libérer: 2017-03-15 16:54:37
original
1460 Les gens l'ont consulté

XML名称空间表示XML名称的使用范围,因为XML可自定义元素标签,所以有不同XML应用间XML名称重名的机会是很大的。

如果没有一种方法来区分不应用的名称,就会造成混乱。XML名称空间就是为了解决这个问题而设计的。通过XML名称空间,我们可以区分来自不同的XML应用的具有相 
XML名称空间表示XML名称的使用范围,因为XML可自定义元素标签,所以有不同XML应用间XML名称重名的机会是很大的。如果没有一种方法来区分不应用的名称,就会造成混乱。XML名称空间就是为了解决这个问题而设计的。通过XML名称空间,我们可以区分来自不同的XML应用的具有相同名称的元素和属性。可以将来自单一XML应用的相关元素和属性集合在一起,方便软件识别和处理。 
名称空间由前缀和本地部分组成,中间用冒号分隔。前缀标识元素或属性的所在名称空间,本地部分标识名称空间中的某个元素或属性。整个名称也称为限定名称(qualified name)。前缀可以用除XML(大小写任意组合)三个字母外的任何合法的XML名称字符组成。每个限定名称中的前缀都必须与唯一的一个URI关联。带有相同URI关联的前缀的名称属于同一名称空间。 

<rdf:RDF xmlns:rdf="http://www.w3.org/TR/REC-rdf-syntax#"> 
<rdf:Description about="http://www.example.com/test.xml"> 
<title>example</title> 
<author>linuxsir</author> ... </rdf:Description> 
</rdf:RDF>
Copier après la connexion

前缀一般在使用该前缀的最上层元素中定义。在下层元素中也可定义不同的前缀:

<rdf:RDF xmlns:rdf="http://www.w3.org/TR/REC-rdf-syntax#"> 
<rdf:Description xmlns:dc="http://www.w3.org/dc/" about="http://www.example.com/test.xml"> 
<dc:title>example</dc:title> 
<dc:author>linuxsir</dc:author> ... </rdf:Description> 
</rdf:RDF>
Copier après la connexion

通过将无前缀的xmlns属性附加到根元素中,可以指定不带前缀的元素及所有不带前缀的子元素属于某个名称空间。

<svg xmlns="http://www.w3.org/2000/svg"> 
<ellipse rx="110" ry="130" /> 
<rect x="4cm" y="1cm" /> 
</svg>
Copier après la connexion

如果名称空间只用来识别来自某种XML应用的元素和属性,而不是用来区分具有相同名称的不同元素,则可在DTD的元素中定义一个固定的xmlns属性,而不需要文档中定义。定义方法如下:

<!ATTLIST svg xmlns CDATA #FIXED "http://www.w3.org/svg/">
Copier après la connexion


在定义DTD时,需要使用名称空间前缀的在定义时也要把前缀写到DTD定义里,如:

<!ELEMENT xlink:name (#PCDATA)>
Copier après la connexion


使用参数实体引用来定义名称空间前缀可方便DTD文档的维护,整理发布!转载请注明出处,谢谢!

<!ENTITY % prefix "xlink"> <!ENTITY % colon ":">
Copier après la connexion


接着,利用该参数实体名称定义更多的参数实体引用,如:

<!ENTITY % xlink-title "%prefix;%colon;title"> <!ENTITY % xlink-author "%prefix;%colon;author">
Copier après la connexion


这样,如果需更改前缀,只需修改一个地方就可以了,不用整篇文档修改。

<!ELEMENT %xlink-title; (#PCDATA)> 
<!ELEMENT %xlink-author; (#PCDATA)> 
不能在ATTLIST和ELEMENT声明中直接使用%prefix;和%colon;,
因为在另一个实体的外部使用这些参数实体时,XML解析器会在实体替换文本的两边添加额外的空格。
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!