Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2565444
  • 博文数量: 320
  • 博客积分: 9650
  • 博客等级: 中将
  • 技术积分: 3886
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-27 21:05
文章分类

全部博文(320)

文章存档

2024年(1)

2017年(5)

2016年(10)

2015年(3)

2014年(3)

2013年(10)

2012年(26)

2011年(67)

2010年(186)

2009年(9)

分类: 项目管理

2010-01-19 12:14:10

XML 命名空间可提供避免元素命名冲突的方法
命名冲突
由于 XML 中的元素名是预定义的,当两个不同的文档使用相同的元素名时,就会发生命名冲突。
这个 XML 文档携带着某个表格中的信息:
Xml代码 复制代码
  1. <table>  
  2.    <tr>  
  3.    <td>Applestd>  
  4.    <td>Bananastd>  
  5.    tr>  
  6. table>  

这个 XML 文档携带有关桌子的信息(一件家具):
Xml代码 复制代码
  1. <table>  
  2.    <name>African Coffee Tablename>  
  3.    <width>80width>  
  4.    <length>120length>  
  5. table>  

假如这两个 XML 文档被一起使用,由于两个文档都包含带有不同内容和定义的 元素,就会发生命名冲突。

使用前缀来避免命名冲突
此文档带有某个表格中的信息:
Xml代码 复制代码
  1. <h:table>  
  2.    <h:tr>  
  3.    <h:td>Applesh:td>  
  4.    <h:td>Bananash:td>  
  5.    h:tr>  
  6. h:table>  

XML 文档携带着有关一件家具的信息:
Xml代码 复制代码
  1. <f:table>  
  2.    <f:name>African Coffee Tablef:name>  
  3.    <f:width>80f:width>  
  4.    <f:length>120f:length>  
  5. f:table>  

现在,命名冲突不存在了,这是由于两个文档都使用了不同的名称来命名它们的
元素 ()。
通过使用前缀,我们创建了两种不同类型的
元素。

使用命名空间(Namespaces)
这个 XML 文档携带着某个表格中的信息:
Xml代码 复制代码
  1. <h:table xmlns:h="">  
  2.    <h:tr>  
  3.    <h:td>Applesh:td>  
  4.    <h:td>Bananash:td>  
  5.    h:tr>  
  6. h:table>  

XML 文档携带着有关一件家具的信息:
Xml代码 复制代码
  1. <f:table xmlns:f="">  
  2.    <f:name>African Coffee Tablef:name>  
  3.    <f:width>80f:width>  
  4.    <f:length>120f:length>  
  5. f:table>  

与仅仅使用前缀不同,我们为
标签添加了一个 xmlns 属性,这样就为前缀赋予了一个与某个命名空间相关联的限定名称。

XML Namespace (xmlns) 属性
XML 命名空间属性被放置于某个元素的开始标签之中,并使用以下的语法:
xmlns:namespace-prefix="namespaceURI"
当一个命名空间被定义在某个元素的开始标签中时,所有带有相同前缀的子元素都会与同一个命名空间相关联。
注释:用于标示命名空间的地址不会被解析器用于查找信息。其惟一的作用是赋予命名空间一个惟一的名称。不过,很多公司常常会作为指针来使用命名空间指向某个实存的网页,这个网页包含着有关命名空间的信息。
请访问 。

统一资源标示符(Uniform Resource Identifier (URI))
统一资源标示符是一串可以标示因特网资源的字符。最常用的 URI 是用来标示因特网域名地址的统一资源定位器(URL)。另一个不那么常用的 URI 是统一资源命名(URN)。在我们的例子中,我们仅使用 URL。
默认的命名空间(Default Namespaces)
为某个元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。
请使用下面的语法:
xmlns="namespaceURI"
这个 XML 文档携带着某个表格中的信息:
Xml代码 复制代码
  1. <table xmlns="">  
  2.    <tr>  
  3.    <td>Applestd>  
  4.    <td>Bananastd>  
  5.    tr>  
  6. table>  
xmlns="">
Apples Bananas

XML 文档携带着有关一件家具的信息:
Xml代码 复制代码
  1. <table xmlns="">  
  2.    <name>African Coffee Tablename>  
  3.    <width>80width>  
  4.    <length>120length>  
  5. table>  

命名空间的实际应用
当开始使用 XSL 时,您不久就会看到实际使用中的命名空间。XSL 样式表用于将XML文档转换为其他格式,比如 HTML。
如果您仔细观察下面的这个 XSL 文档,就会看到大多数的标签是HTML标签。非 HTML 的标签都有前缀 xsl,并由此命名空间标示:"":
Xml代码 复制代码
  1. xml version="1.0" encoding="ISO-8859-1"?>  
  2.   
  3. <xsl:stylesheet version="1.0" xmlns:xsl="">  
  4.   
  5. <xsl:template match="/">  
  6. <html>  
  7. <body>  
  8.   <h2>My CD Collectionh2>  
  9.   <table border="1">  
  10.     <tr>  
  11.       <th align="left">Titleth>  
  12.       <th align="left">Artistth>  
  13.     tr>  
  14.     <xsl:for-each select="catalog/cd">  
  15.     <tr>  
  16.       <td><xsl:value-of select="title"/>td>  
  17.       <td><xsl:value-of select="artist"/>td>  
  18.     tr>  
  19.     xsl:for-each>  
  20.   table>  
  21. body>  
  22. html>  
  23. xsl:template>  
  24.   
  25. xsl:stylesheet> 
阅读(4710) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~