Net Core教程

【C# 序列化】XML Namespaces xml命名空间

本文主要是介绍【C# 序列化】XML Namespaces xml命名空间,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

XML 名称空间

XML Namespaces提供了一种xml文档中避免元素名称冲突的方法

XML 名称空间是一组用 IRI/URI 引用标识的名称,这些名称在 XML 文档中用作元素类型和属性名称。

XML 名称空间是由 2006 年 8 月 16 日的名为 Namespaces in XML 的 W3C 建议定义的。XML 标记名应当是全局唯一的,由于性能方面的原因,XML 标记名还应该比较短。为了解决这种冲突,W3C 名称空间建议定义了属性 xmlns,它可以修改任何 XML 元素。如果它存在于元素中,那么它标识此元素的名称空间。

xmlns 属性的语法如下:

xmlns:prefix=namespace  //扩展名称xmlns=namespace  //默认命名空间

基本概念

以下是《Namespaces in XML》规范中的部分内如:

1、命名空间分声明:为默认命名名空间和扩展名称

<x xmlns ="http://www.w3.org" //默认命名空间 该命名空间下是属性和元素不用加前缀
   xmlns:n2="http://www.w3.org/prefix" > //扩展命名空间 n2 使用该命名空间下是属性和元素要加前缀
 
</x>

 
2、声明命名空间 可应用与属性和元素

//作用与属性
<x xmlns:edi='http://ecommerce.example.org/schema'>
  <!-- the 'taxClass' attribute's namespace is http://ecommerce.example.org/schema -->
  <lineItem edi:taxClass="exempt">Baby food</lineItem>
</x>
//作用与元素
  <edi:price xmlns:edi='http://ecommerce.example.org/schema' units='Euro'>32.18</edi:price>

 

2、命名空间约束:不建议使用以X、m、L 开头的本地命名空间名

xmlns属性就是在命名空间中定义的。用于将命名空间URI/IRI 映射为简短的本地常量,方便文档中使用 命名空间。
2、XML Namespaces指定了使用IRI格式的名称作为xml框架文档的名称(框架的标识符(身份证)),注意 已不推荐用URI 作命名空间名称。
3、XML解析器处理命名空间IRI/URI时也仅仅将其作为字符串,URI不是真是存在的,仅仅用来标识xml文档。
4、虽然术语命名空间的URI被广泛使用,W3C推荐规范称之为命名空间的名称。规范并未强制规定命名空间的名称必须使用URI
在推荐规范的1.1版,命名空间的名称变成了国际化资源标识符(IRI)
5、空字符串虽然是合法的 URI 引用,但不能用作命名空间名称。
不推荐在命名空间声明中使用相对 URI 引用(包括同一文档引用)
6、可以将多个命名空间前缀声明为单个元素的属性

<?xml version="1.0"?>
<!-- both namespace prefixes are available throughout -->
<bk:book xmlns:bk='urn:loc.gov:books'
         xmlns:isbn='urn:ISBN:0-395-36341-6'>
    <bk:title>Cheaper by the Dozen</bk:title>
    <isbn:number>1568491379</isbn:number>
</bk:book>

7、默认命名空间声明中的属性值可能为空。在声明的范围内,这具有相同的效果,即没有默认命名空间。

<?xml version='1.0'?>
<Beers>
  <!-- the default namespace inside tables is that of HTML -->
  <table xmlns='http://www.w3.org/1999/xhtml'>//不为空
   <th><td>Name</td><td>Origin</td><td>Description</td></th>
   <tr> 
     <!-- no default namespace inside table cells -->
     <td><brandName xmlns="">Huntsman</brandName></td>
     <td><origin xmlns="">Bath, UK</origin></td>
     <td>
       <details xmlns=""><class>Bitter</class><hop>Fuggles</hop>//为空,在声明的范围内效果是相等的
         <pro>Wonderful hop, light alcohol, good summer beer</pro>
         <con>Fragile; excessive variance pub to pub</con>
         </details>
        </td>
      </tr>
    </table>

8、属性的唯一性

在符合此规范的 XML 文档中,任何标记都不能包含两个属性:

1、具有相同的名称或
2、具有具有相同本地部分的限定名称,并且前缀已绑定到相同的命名空间名称。

<!-- http://www.w3.org is bound to n1 and n2 -->
<x xmlns:n1="http://www.w3.org" 
   xmlns:n2="http://www.w3.org" >
  <bad a="1"     a="2" />
  <bad n1:a="1"  n2:a="2" />
</x>

 


http://www.w3.org/2001/XMLSchema

这篇关于【C# 序列化】XML Namespaces xml命名空间的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!