有关xml中的xmlns 命名空间
- 格式:pdf
- 大小:176.26 KB
- 文档页数:8
xml名词术语以下是一些常见的XML名词术语:1. 标签(Tag):XML中的标识符,用于标识一个元素的开始和结束,通常是用尖括号包围的名称。
2. 元素(Element):指在XML文档中定义的结构化数据单元,由标签、属性和内容组成。
3. 属性(Attribute):XML元素中的数据项,用于提供有关元素的更多信息,通常是作为键值对的形式出现。
4. 命名空间(Namespace):XML中的一个机制,用于避免不同XML文档中的元素和属性名称重复的问题。
5. 文档模型(Document Model):用于将XML数据当作树型对象进行解析和操纵的技术,也称作“拉”模型。
DOM是XML文档的一种特殊树型结构编程模型。
DOM标准目前分成三个级别。
6. 事件模型(Event Model):用于通过使用回调或处理程序对XML数据进行解析的技术,也称作“推”模型。
7. 名称空间(Namespace):明确从不同的DTD或模式中标识出XML标记的方法,这样它们可以混合在同一个XML文档中。
8. RDF:资源描述框架,用于将XML属性数据和通常驻留在别处的信息相关联的一种压缩XML方言。
9. SOAP:“简单对象访问协议”是类似于XML-RPC(请参阅XML-RPC)的网络协议。
通过使用SOAP,应用程序可以创建远程对象、调用该对象上的方法,以及检索结果。
10. 验证:关于DTD和模式,验证结构良好的XML文档是否正确。
11. 结构良好:一个XML文档,它的标记和数据符合XML 1.0语法。
12. W3C:世界万维网联盟,它已经成为大多数XML相关技术的重要标准主体。
W3C将最终认可的规范称作“推荐”(而不是标准)。
从xmlns的作用说起查了资料和自己实践后,得出了一些关于xml和xmlns的结论看一个最常见的javaweb 中xml配置文件的开头:<?xml version='1.0' encoding='UTF-8'?> <beans xmlns='' xmlns:xsi='' xmlns:context='' xmlns:mvc='' xsi:schemaLocation=' /spring-beans.xsd /spring-mvc-4.0.xsd /spring-context.xsd'> 其中xmlns的意思就是xml namespace ,就是命名空间,为了区分一个xml中重复的定义而产生的,为什么后面跟着一串url, 为了唯一性如何使用xmlns:很简单,使用语法: xmlns:namespace-prefix='namespaceURI',如:xmlns:abc=''.定义了abc后,要引用''中的元素,就必须加上abc前缀,如常见的:<context:component-scan base-package='com.taotao.controller' />看这一句:<beans xmlns=''定义默认命名空间为为一个xml文档定义默认的命名空间为什么beans前没有加上命名空间限定符,因为用xmlns定义了默认的命名空间后,在该xml下使用这个命名空间下的元素可以不用加前缀第三行到第五行:定义了三个命名空间,代号为xsi,context,mvc再看看后面的:xsi:schemaLocation=' /spring-beans.xsd /spring-mvc-4.0.xsd /spring-context.xsd'由于第三行定义了xsi,所以可以使用xsi中的元素schemaLocationxsi是个什么?按照前面说的xmlns:xsi,就是定义了命名空间代号xsi,代表但是我们发现,这个 xmlns:xsi 在不同的 xml 文档中似乎都会出现。
xmlns是什么最近继续看Struts,在看struts.xml配置的时候看到这个:[html]view plaincopy1.xmlns="/xml/ns/j2ee"2.xmlns:xsi="/2001/XMLSchema-instance"3.xsi:schemaLocation="/xml/ns/j2ee /xml/ns/j2ee/web-app_2_4.xsd"想起了自己在以前的博客中有人问到这个问题,然后自己对XML 也比较陌生,所以系统性地学了一下,把基本的属性,XML DOM (其实和HTML DOM类似),DTD,XML Schema,xmlns理了一次。
类似这种技术知识的,直接谷歌就好,这样会省很多时间。
先是从StackOverFlow看到:问:我在xml文件中看到这句话,xmlns,这是什么呢?[html]view plaincopy1.xmlns:android="/apk/res/android"答:它定义了一个XML命名空间。
在你的例子中,命名空间前缀是android,命名空间的uri为[html]view plaincopy1./apk/res/android在文档中,你可以看到<android:foo>这样的元素。
这样认为,命名空间前缀就是一个变量,以简短的名字表示整个命名空间uri。
和</apk/res/android:foo />这样写是等价的。
XML解析器读取的时候就是这样读取的。
参考:参考的文章写得比较好,w3c在这部分讲得过于简单,所以还是翻译一下这篇文章。
XML Namespaces Explained为什么我们需要XML命名空间?这里有存在命名空间的两个基本需要:1、消除两个刚好同名的元素的歧义。
2、将共同idea的元素分组在一起。
这些描述有点模糊,直接看例子:消除两个刚好同名的元素的歧义考虑一下:* 在(x)html文件中有table元素,同时XSL-FO(现在称为XSL,作用可以类比CSS对Html的作用)里面也有同名的元素。
xml格式数据标签详解XML(可扩展标记语言)是一种标记语言,它允许开发人员自定义标记来描述数据。
为了使XML文档易于阅读和理解,文档需要分类和标记,这就需要使用标签。
下面是一些XML数据标签的详细解释。
1. <?xml?> 标签:XML文档都必须以此标签作为开头,并指定XML版本及编码方式。
2. 根标签:<root> </root>:XML文档的最外层标签,它包含所有的其他标签。
根标签只能有一个。
3. 元素标签:<element> </element>:XML中最基本和重要的标签,用于表示数据的值。
元素标签可以嵌套其他标签。
4. 注释标签:<!-- -->:用于在XML数据中添加注释信息,不会被解析器处理。
5. 属性标签:<element attribute="value"> </element>:用于给元素标记添加属性值,属性标签必须放在元素标签的开始标记中,并用逗号分隔多个属性。
6. CDATA标签:<![CDATA[ ]]>:用于在XML文档中放置纯文本数据而不进行解析,这种标签内的数据会被原样保留。
7. 处理指令标签:<?name value?>:用于在XML文档中指定一系列的处理指令,比如XML格式的样式表。
8. 命名空间标签:xmlns:用于创建XML文档的命名空间,以便区分来自不同来源或模块的数据。
以上就是XML格式的数据标签的详细解释。
这些标签可以帮助开发人员更好地描述和组织XML文件中的数据。
列举xml的文档结构XML(可扩展标记语言)是一种用于存储和传输结构化数据的标记语言,它具有自描述性和扩展性,被广泛应用于各种领域,例如Web应用程序、数据库系统和电子商务等。
XML文档结构由各种元素和标记组成,下面将列举和描述XML文档结构的相关参考内容。
1. XML声明(XML Declaration):XML声明是XML文档的开头,用于指定XML版本和使用的字符编码。
它以`<?xml version="1.0" encoding="UTF-8"?>`的格式出现,其中`version`属性指定XML版本,`encoding`属性指定字符编码。
2. 根元素(Root Element):XML文档的根元素是所有其他元素的父元素。
它是XML文档的顶层元素,包含整个文档的内容。
3. 元素(Element):XML文档中的元素是最基本的构建块,用于表示数据或信息。
元素由开始标签和结束标签组成,之间包含文本、子元素或属性等。
4. 属性(Attribute):XML元素可以具有属性,用于提供关于该元素的额外信息。
属性位于元素的开始标签中,由名称和值组成,中间使用等号连接。
5. 文本(Text):XML文档中的文本表示实际的数据或信息。
文本出现在元素的开始标签和结束标签之间,可以包含任意字符,包括空白字符和特殊字符。
6. 注释(Comment):XML文档中的注释用于添加对文档的解释或说明。
注释以`<!--`开头,以`-->`结尾,它们不会被解析器处理。
7. CDATA段(CDATA Section):CDATA段用于包含特殊字符和标记,它不会被解析器解析。
CDATA段以`<![CDATA[`开头,以`]]>`结尾,其中的内容作为原始文本处理。
8. 命名空间(Namespace):XML文档中的命名空间用于避免元素和属性名称的冲突。
</xsd:sequence></xsd:complexType></xsd:element><xsd:element name="Student" type="student:stu"/><xsd:complexType name="stu"><xsd:sequence><xsd:element name="Name" type="xs:string"/><xsd:element name="Class" type="xs:string"/></xsd:sequence></xsd:complexType></xsd:schema>若自身并不使用重用组件,仅供外部使用的话,则只定义targetNameSpace就可以,不用指定别名。
通过上面的例子,我们可以很深刻的理解targetNameSpace。
targetNamespace定义了Schema定义的新元素与属性的名称空间。
而"/2001/XMLSchema"名称空间则定义了element, attribute, complexType, group, simpleType等元素。
6. schemaLocationschemaLocation 属性引用具有目标名称空间的XML 架构文档(.xsd)。
<xsi:schemaLocation="list of anyURI" >该属性将具有目标名称空间的XML 架构文档(.xsd)与实例文档(.xml)相关联。
不要求XML 架构有名称空间。
若要为没有目标名称空间的XML 架构指定位置,请使用noNamespaceSchemaLocation 属性。
java xml标签详解在Java中处理XML通常涉及XML文档和它们之间的结构、元素、属性和文本。
在XML文档中,元素是内容的边界,而属性是附加到元素上的键值对。
以下是一些基本的XML标签概念:1.元素(Element): XML元素是由开始标签、结束标签(有些元素可能没有结束标签)和元素之间的内容组成的。
例如,<name>John Doe</name>。
2.开始标签(Start Tag): 开始标签用于标记元素的开始,例如<name>。
3.结束标签(End Tag): 结束标签用于标记元素的结束,并使用/符号来表示。
例如</name>。
4.空元素(Empty Element): 空元素只有一个开始标签,没有结束标签。
例如<br/>。
5.属性(Attribute): 属性是附加到元素上的键值对。
它们在开始标签中定义,由键值对的形式出现(key="value")。
例如<element attribute="value">。
6.文本(Text): 文本是元素之间的内容,例如<name>John Doe</name>中的 "John Doe"。
7.命名空间(Namespace): 命名空间用于区分具有相同名称的元素或属性。
它们通常在开始标签中定义,例如<element xmlns="namespaceURI">。
8.CDATA(Character Data): CDATA用于包含可能被解析为XML标记的文本。
例如,如果您有一个包含大量HTML的XML元素,您可以使用CDATA来避免HTML被解析为XML。
示例:<![CDATA[Some text <em>more text</em>]]>。
带命名空间的XPath表达式1. 什么是XPathXPath是一种在XML文档中定位节点的语言,它可以用来选择XML 文档中的元素和属性。
XPath有自己的数据模型,依赖于节点和数值的概念,XPath可以在XML文档中查找信息,是一个用于遍历和查询XML文档的标准。
2. 命名空间的概念在XML文档中,命名空间用来避免元素和属性名的冲突。
命名空间是一种将元素和属性的名字与其所属的XML文档区分开来的机制,它通过给元素和属性名字加上一个前缀来创建一个唯一的标识符。
命名空间的作用是使得不同XML文档中具有相同名字的元素和属性可以被区分开来。
3. 带命名空间的XPath表达式在XPath中,如果要选取带有命名空间的节点,需要使用带有命名空间的XPath表达式。
带命名空间的XPath表达式的格式如下:```xml/ns1:element/ns2:subelement```其中,`ns1`和`ns2`是命名空间的前缀,`element`和`subelement`分别是带有命名空间的元素和子元素的名字。
在使用带命名空间的XPath表达式时,需要先声明相应的命名空间,然后在XPath表达式中使用命名空间的前缀来选择相应的节点。
4. 示例假设有如下的XML文档:```xml<root xmlns:ns1="" xmlns:ns2=""><ns1:element><ns2:subelement>Value</ns2:subelement></ns1:element></root>```要选择`<ns2:subelement>`节点中的值,可以使用如下的带命名空间的XPath表达式:```xml/root/ns1:element/ns2:subelement/text()```在这个XPath表达式中,`ns1`和`ns2`是命名空间的前缀,`element`和`subelement`分别是带有命名空间的元素和子元素的名字。
JSP XML 使用命名空间
在一个班级中有老师,也有学生。
老师有自己的编号、姓名以及所教授的科目等属性,学生有编号、姓名、性别等属性。
其中老师与学生有很多相同的属性,比如编号、姓名等,如果使用命名空间就可以很好区别哪些是老师的属性,哪些是学生的属性。
练习使用XML描述班级信息,其中使用了命名空间,步骤如下:(1)创建XML文件:xmlns.xml。
对于“老师”元素,使用命名空间前缀t 来描述;“学生”元素,使用命名空间前缀s来描述。
代码如下所示:
(2)测试。
如果创建的XML没有错误,则使用浏览器可以正常显示数据,效果如图7-20所示。
图7-20 命名空间。
xml中xsd、xsi、xmlns的含义XML是可扩展标记语⾔,它定义了按格式编码⽂件的⼀系列规则[3],编码的⽂件是机器可读和⼈可读的。
XML⽂件对于机器可读是基于XSD(XML Schema Definition)[1]的。
XSD是受W3C推荐的XML⽂件的结构描述⽂件的规范⽂档,其中详细说明了如何正式描述XML⽂件中的元素[3];也就是说,XSD是XML⽂件的结构描述⽂件(⽐如.xsd⽂件,⼀个XSD的实例,它是依照XSD的规范来书写的)的规范⽂档。
编译xml的⽅式是跨语⾔的,不同语⾔的解析⽅式相同,只是具有不同的语⾔形式。
java中解析XML的⽅式之⼀是DOM解析,他是基于jdk的lang包中DocumentBuilderFactory类的,如下所⽰[2]。
public class DOMTest {public static void main(String[] args) {//创建⼀个DocumentBuilderFactory的对象DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();//创建⼀个DocumentBuilder的对象try {//创建DocumentBuilder对象DocumentBuilder db = dbf.newDocumentBuilder();//通过DocumentBuilder对象的parser⽅法加载books.xml⽂件到当前项⽬下Document document = db.parse("books.xml");//获取所有book节点的集合NodeList bookList = document.getElementsByTagName("book");//通过nodelist的getLength()⽅法可以获取bookList的长度System.out.println("⼀共有" + bookList.getLength() + "本书");}}} 我刚开始接触XML时,对.xsd和XSD的区别⽐较困惑。
XML SAX处理名称空间在XML文档中,名称空间主要是有效的区分名字相同的标记。
当使用两个标记的名字相同时,它们可以通过隶属不同的名称空间来相互区分。
名称空间通过声声明的名称空间的名称是“”,前缀是“xiao”。
名称空间的名称是“”,无前缀。
名称空间的声明是在一个标记的开始标记中,当解析器在一个标记的开始标记中发现一个名称空间声明时,就先报告一个“名称空间开始”事件给事件处理器,然后在报告“开始标记事件”。
当事件处理器获得一个“名称空间开始”的事件时,就会调用方法:对数据做出处理,参数prefix表示正在声明的名称空间前缀,如果该名称空间没有前缀,其值不包含任何字符串,即prefix=“”。
uri表示映射到前缀的名称空间URI。
名称空间涉及到作用域,一个标记如果使用名称空间,那么该标记及其子标记都是名称空间的作用域。
当解析器解析完该标记后,就会向事件处理器报告一个“名称空间结束”事件,表明名称空间的作用域结束了,事件处理器就会知道所发生的方法对发现的数据做出处理。
例如:解析器报告事件的顺序是:“名称空间开始”、“开始标记”、“文本数据”、“结束标记”和“名称空间结束”。
为了能让解析器报告“名称空间”事件,SAXParser现在创建一个案例,演示SAX解析器处理名称空间。
首先创建XML文档,打将上述代码保存,名称为Example7.xml。
创建解析XML文档的Java程序,打将上述代码保存,名称为Example7.java。
打开命令提示符窗口,编译并解释执行该程序,会显示如图7-8所示窗口:图7-8 处理名称空间在编写处理名称空间的程序时,首先需要设定解析器工厂处理名称空间,其代码为“factory.setNamespaceAware(true)”。
事件处理器中,重写了startPrefixMapping ()、endPrefixMapping()和endDocument()方法。
startPrefixMapping()方法输出了名称空间的前缀和名称,并计算了名称空间的个数。
XML⽂档中的xmlns、xmlns:xsi和xsi:schemaLocation⽂章转载⾃:相信很多⼈和我⼀样,在编写Spring或者Maven或者其他需要⽤到XML⽂档的程序时,通常都是将这些XML⽂档头拷贝过来,并没有理解其中元素(⽐如xmlns,xmlns:xsi,xsi:schemaLocation)的真正含义,不知道哪些元素是多余的,也不知道为什么要加那些元素。
这样当有时候⽹上Copy的XML头有错的时候⾃⼰却不知道怎么下⼿。
我也是这样的,于是今天花了点时间好好的理解了⼀下这些元素及其⽤法,现整理与此,在此谢谢各位前辈的经验,如有总结的不对或者不好的地⽅,欢迎留⾔提出各位的宝贵意见。
话不多说,先来⼀段Spring的XML样本,相信⼤家都很眼熟:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/mvc/schema/mvc/spring-mvc.xsd"><context:component-scan base-package="xxx.xxx.controller" /><context:annotation-config/><mvc:default-servlet-handler/><mvc:annotation-driven/><mvc:resources mapping="/images/**" location="/images/" /><bean id="xxx" class="xxx.xxx.xxx.Xxx"><property name="xxx" value="xxxx"/></bean></beans>这个⽂档中,根元素<beans/>就不⽤说了,接下来是xmlns。
XML配置⽂件的命名空间与Spring配置⽂件中的头⼀直以来,写Spring配置⽂件,都是把其他配置⽂件的头拷贝过来,最多改改版本号,也不清楚哪些是需要的,到底是⼲嘛的。
今天整理⼀下,拒绝再⽆脑copy。
⼀、Spring配置⽂件常见的配置头<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-3.0.xsd/schema/context /schema/context/spring-context-3.0.xsd/schema/aop /schema/aop/spring-aop-3.0.xsd/schema/tx /schema/tx/spring-tx-3.0.xsd"><!--中间是配置⽂件部分--><bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><tx:advice id="txAdvice" transaction-manager="txManager"><tx:attributes><tx:method name="find*" propagation="NOT_SUPPORTED"/></tx:attributes></tx:advice><aop:config><aop:aspect id="***" ref="***"/><aop:pointcut id="***" expression="****"/></aop:config><!--中间是配置⽂件部分--></beans>重点关注配置⽂件头部分,就是写在<beans >元素⾥的部分。
命名空间的声明:
示例:
<?xml version=’1.0’encoding=’utf-8’standalone=’yes’>
<food xmlns:lixg=’url’>
<lixg:apple>苹果</lixg:apple>
</food>
这里的url并是一个真实的url,只是一个修饰。
命名空间的定义有两种方式:直接定义和缺省定义。
直接定义:xmlns:<前缀>=<命名空间名>
缺省定义:xmlns=<命名空间名>
缺省方式声明的命名空间就是作用域内的元素的缺省命名空间。
引入了命名空间之后元素的名称的定义,就有了新的规定:
前缀:本地名称
命名空间的作用域:
缺省定义:定义命名空间的元素的任何没有特殊说明的子元素以及包含在没有前缀的元素内的子元素。
直接定义:定义命名空间的元素的子元素,除非子元素指定了其他的命名空间。
缺省方式声明命名空间时url可以为空,直接定义不可以,当url为空的时候表示该元素不属于任何一个命名空间。
命名空间作用于属性:
一个元素的属性不能相同,可以为相同名称的属性指定不同的命名空间。
XML入门教程本教程将向初学者介绍XML的基础知识,包括语法、元素、属性、命名空间、文档类型定义等内容。
1.XML语法:XML使用尖括号(<>)来标记开始和结束,如<element>。
每个XML文档必须有一个根元素,所有其他元素必须嵌套在根元素内。
2.XML元素:XML文档由元素构成,元素由开始标记和结束标记包围,如<element>data</element>。
元素可以嵌套在其他元素中,形成层次结构。
3.XML属性:元素可以包含属性,属性用于为元素提供额外的信息。
属性由名称和值组成,如<element attribute="value">data</element>。
4.XML命名空间:XML命名空间用于解决元素和属性名称冲突的问题。
通过为元素和属性添加命名空间前缀,可以将其归属于特定的命名空间。
例如:<ns:element>。
5.XML文档类型定义(DTD):DTD定义了XML文档的结构和规则。
它可以定义允许的元素、元素顺序、元素类型、元素属性等。
DTD还可以定义实体和符号,用于表示特殊字符和文本片段。
6.XML解析和生成:XML解析是将XML文档解析为可供程序使用的数据结构的过程。
常用的XML解析技术包括DOM(文档对象模型)和SAX(简单API for XML)。
XML生成是将程序数据转换为XML文档的过程,可以使用XML库或编程语言提供的API来生成XML文档。
7.XML相关技术:XML还有许多相关技术,例如XSLT(可扩展样式表语言转换)、XPath(XML路径语言)、XQuery(XML查询语言)和XML Schema(XML模式定义语言)。
这些技术通过增强XML的功能和表达能力,使得XML在数据转换、数据查询和数据验证方面变得更加强大和灵活。
希望这个XML入门教程可以帮助初学者快速上手XML,了解XML的基础知识和相关技术。
1 Xml 命名空间1.1 XML 命名空间 XML NamespacesXML 命名空间提供避免元素命名冲突的方法。
XML 命名空间属性被放置于元素的开始标签 之中,并使用以下的语法: xmlns:namespace-prefix="namespaceURI" 举例 <f:table xmlns:f="/furniture"> <h:table xmlns:h="/TR/html4/">当命名空间被定义在元素的开始标签中时, 所有带有相同前缀的子元素都会与同一个命名空 间相关联。
注释: 标示命名空间的地址不会被解析器用于查找信息。
其惟一的作用是赋予命名空间一个 惟一的名称。
不过,很多公司常常会作为指针来使用命名空间指向实际存在的网页,这个网 页包含关于命名空间的信息。
1.2 默认的命名空间(Default Namespaces)为元素定义默认的命名空间可以让我们省去在所有的子元素中使用前缀的工作。
xmlns="namespaceURI" 举例 <table xmlns="/TR/html4/">2 Xml Schema 命名空间2.1 常用命名空间schema 元素引用了三个最常使用的命名空间: xmlns="/2001/XMLSchema" xmlns:xsd="/2001/XMLSchema-datatypes" xsd 是 XML Schema datatypes 的意思 xmlns:xsi="/2001/XMLSchema-instances" xsi 是 XML Schema Instances 的意思 第二和第三个属性用 XML 命名空间来标识 W3C 中的两个 XML schema 规范。
XML 定义命名空间
命名空间是通过使用一系列保留属性进行声明。
这一系列保留属性的名称必须是xmlns或以“xmlns:”作为前缀。
与其它任何XML属性一样,这些属性可以直接
xmlns是定义命名空间的关键字,用来声明命名空间。
prefix是命名空间前缀属性名称,定义命名空间前缀名称必须遵守下面两条基本规则:
●名称必须由字母、数字、下划线、点号、连字符组成
●名称首字母必须是字母或下划线。
属性值是一个URI引用,是识别该命名空间的命名空间名字。
为了满足预期的用途,命名空间的名字应该有具有惟一性和持久性。
命名空间前缀:subject和content。
xmlns:subject和xmlns:content即为命名空间的属性名,它们的值“http://www.xml_/xmlns-subject”和“urn:xml_book:book_ content”作为URI,一般情况下,可以使用URL作为URI,因为URL中使用的域名具有惟一性。
对于<subject:book>元素,使用命名空间前缀subject来描述元素book和descri
在前面我们使用的是默认命名空间前缀,有关默认命名空间将在2.5.3节中进行介绍。
因此使用自定义命名空间的元素必须使用元素的完整名字,而不能使用标记名称作为元素名称。
因此<book>和<subject:book>不是同一个元素:第一个元素是默认空间中的元素,而第二个元素是指定命名空间“/xmlns-boo ksubjec”中的元素。
使用浏览器解释book.xml文件,效果如图2-7所示。
图2-7 命名空间。
有关xml中的xmlns 命名空间"xmlns"是XHTML namespace的缩写,叫做"名字空间"声明。
名字空间是什么作用呢?我的理解是:由于xml允许你自己定义自己的标识,你定义的标识和其他人定义的标识有可能相同,但表示不同的意义。
当文件交换或者共享的时候就容易产生错误。
为了避免这种错误发生,XML采用名字空间声明,允许你通过一个网址指向来识别你的标识。
比如在一个文档<table>wood table</table>中<table>表示桌子,而在另一个文档<table>namelist</table>中<table>表示表格。
如果我需要同时处理这两个文档,就会发生名字冲突。
为了解决这个问题,我们引进了namespaces这个概念。
namespaces通过给标识名称加一个网址(URL)定位的方法来区别这些名称相同的标识。
Namespaces同样需要在XML文档的开头部分声明,声明的语法如下:<document xmlns:yourname='URL'>其中yourname是由你定义的namespaces的名称,URL就是名字空间的网址。
假设上面的"桌子<table>"文档来自,我们就可以声明为<document xmlns:zhuozi=''>;然后在后面的标识中使用定义好的名字空间:<zhuozi:table>wood table</table>这样就将这两个<table>区分开来。
注意的是:设置URL并不是说这个标识真的要到那个网址去读取,仅仅作为一种区别的标志而已。
命名冲突请看下面两个例子这个 XML 文档在table元素中携带了水果的信息:<table><tr><td>Apples</td><td>Bananas</td></tr></table>这个 XML 文档在table元素中携带了桌子的信息(家具,不能吃的哦):<table><name>African Coffee Table</name><width>80</width><length>120</length></table>如果上面两个XML文档片断碰巧在一起使用的话,那么将会出现命名冲突的情况。
因为这两个片断都包含了<table>元素,而这两个table元素的定义与所包含的内容又各不相同。
--------------------------------------------------------------------------------使用前缀解决命名冲突问题下面的XML文档在table元素中携带了信息:<h:table><h:tr><h:td>Apples</h:td></h:tr></h:table>下面的XML文档携带了家具table的信息:<f:table><f:name>African Coffee Table</f:name><f:width>80</f:width><f:length>120</f:length></f:table>现在已经没有元素命名冲突的问题了,因为这两个文档对各自的table元素使用了不同的前缀,table元素在两个文档中分别是(<h:table> 和<f:table>)。
通过使用前缀,我们创建了两个不同的table元素。
--------------------------------------------------------------------------------使用命名空间下面的XML文档在table元素中携带了信息:<h:table xmlns:h="/TR/html4/"><h:tr><h:td>Apples</h:td></h:tr></h:table>下面的XML文档携带了家具table的信息:<f:table xmlns:f="/furniture"><f:name>African Coffee Table</f:name><f:width>80</f:width><f:length>120</f:length></f:table>在上面两个例子中除了使用前缀外,两个table元素都使用了xmlns属性,使元素和不同的命名空间关联到一起。
--------------------------------------------------------------------------------命名空间属性命名空间属性一般放置在元素的开始标记处,其使用语法如下所示:xmlns:namespace-prefix="namespace"在上面的例子中,命名空间定义了一个Internet 地址:xmlns:f="/furniture"W3C 命名规范声明命名空间本身就是一个统一资源标示符,Uniform Resource Identifier (URI)。
当我们在元素的开始标记处使用命名空间时,该元素所有的子元素都将通过一个前缀与同一个命名空间相互关联。
注意:用来标识命名空间的网络地址并不被XML解析器调用,XML解析器不需要从这个网络地址中查找信息,该网络地址的作用仅仅是给命名空间一个唯一的名字,因此这个网络地址也可以是虚拟的,然而又很多公司经常把这个网络地址值象一个真实的Web页面,这个地址包含了关于当前命名空间更详细的信息。
可以访问/TR/html4/.--------------------------------------------------------------------------------统一资源标识符通用资源标识符(A Uniform Resource Identifier (URI))是一个标识网络资源的字符串。
最普通的URI应该是统一资源定位符Uniform Resource Locator (URL)。
URL用于标识网络主机的地址。
另一方面,另一个不常用的URI是通用资源名字Universal Resource Name (URN)。
在我们的例子中,一般使用的是URLs。
既然前面的例子使用的URL地址来标识命名空间,我们可以确信这个命名空间是唯一的。
--------------------------------------------------------------------------------默认的命名空间定义一个默认的XML命名空间使得我们在子元素的开始标记中不需要使用前缀。
他的语法如下所示:<element xmlns="namespace">下面的XML文档在table元素中包含了水果的信息:<table xmlns="/TR/html4/"><tr><td>Apples</td><td>Bananas</td></tr></table>下面的XML文档包含了家具table的信息:<table xmlns="/furniture"><name>African Coffee Table</name><width>80</width><length>120</length></table>--------------------------------------------------------------------------------使用命名空间档开始使用XSL的时候,就会发现命名空间使用的是如此频繁。
XSL样式单主要用于将XML 文档转换成类似于HTML文件的格式。
如果看一下下面的XSL文档,就会发现有很多标记都是HTML标记。
那些标记并不是HTML标记,是加了前缀的XSL,这个XSL前缀由命名空间"/TR/xsl"所标识:<?xml version="1.0" encoding="ISO-8859-1"?><xsl:stylesheet xmlns:xsl="/TR/xsl"><xsl:template match="/"><html><body><table border="2" bgcolor="yellow"><tr><th>Title</th><th>Artist</th></tr><xsl:for-each select="CATALOG/CD"><tr><td><xsl:value-of select="TITLE"/></td><td><xsl:value-of select="ARTIST"/></td></tr></xsl:for-each></table></body></html></xsl:template></xsl:stylesheet>本文来自CSDN博客,转载请标明出处:/carefree31441/archive/2008/11/06/3235849.aspx。