xml 所用的标签可以为用户自定义标签,主要存储数据信息和内容
以下都应用在xml中:
xsl是可扩展样式语言,是对xml的内容进行逻辑控制,其版本标准一般是在1999年之前定义的
xslt为可扩展样式表语言转换,是xsl的一部分,xsl的功能主要有两个,一个是xml标签转换,主要体现在从一种xml形式转换到另一种xml形式;还有一个就是对xml进行格式化,即用样式进行润色,渲染;xslt的作用主要就是前一种,故现在提到xsl时就狭义上指xslt
xsd是xml的一种模式,主要用来规范注册该xsd引用的xml文档信息,比如数据类型的字节大小等;
命名空间(引用):
对命名空间进行命名
当您在编程语言(例如,C++)中定义命名空间时,有一些对可用在该名称中的字符的限制。XML 命名空间标识符还必须符合特定的语法 — 统一资源标识符 (URI) 引用的语法。这表示 XML 命名空间标识符必须遵守由 RFC 2396 定义的 URI 的常用语法。
URI 被定义为用来标识抽象或物理资源的紧凑字符串。在大多数情况下,URI 引用用来标识物理资源(网页、要下载的文件等),但是,对于 XML 命名空间来说,URI 引用用于标识抽象资源(特别是命名空间)。
按照 URI 规范,有两种常规类型的 URI:统一资源定位器 (URL) 和统一资源名称 (URN)。这两种类型的 URI 都可以用作命名空间标识符。下面是一个可用作命名空间标识符的两个 URL 的示例:
http://www.develop.com/student http://www.ed.gov/elementary/students
下面是几个也可用作命名空间标识符的 URN 的示例:
urn:www-develop-com:student urn:www.ed.gov:elementary.students urn:uuid:E7F73B13-05FE-44ec-81CE-F898C4A6CDB4
命名空间标识符最重要的属性是它的唯一性。作者可以通过向 Internet 命名机构注册域名来保证 URL 的唯一性,然后要负责确保域名后面使用的所有字符串都保持唯一。
URN 以同样的方式工作。下面是基本的 URN 语法:
urn:<namespace identifier>:<namespace specific string>
为了保证 URN 的一致性,作者必须再次向 Internet 命名机构注册他们的命名空间标识符。然后,作者负责按照某个方案来生成特定于命名空间的唯一字符串。
定义 XML 命名空间的组织应当为新命名空间名称的创建制定一个一致的方案。例如,W3C 经常定义新的 XML 命名空间。这些组织使用一个相当直观的试探法,该试探法使用当前年份以及工作组的名称。图 2 阐释了由 W3C 使用的模式。

图 2. W3C URI 构造
根据定义,URI 是唯一的,因此完全不必在 XML 命名空间标识符的上面放置其他命名空间。只要命名空间作者保证命名空间标识符的唯一性,总是可以只用单个命名空间限定符来唯一地标识 XML 中的内容。这大大简化了这一在 XML 中处理命名空间的工作。
XML 处理器将命名空间标识符视为不透明的字符串,而从不将它们视为可解析的资源。重申一遍:命名空间标识符仅仅是字符串!当两个命名空间标识符中的各个字符都完全相同时,它们就被视为相同。
最后,它确实与选择使用哪个类型的 URI 引用无关。许多开发人员因 URL 更易于读取和记忆而喜欢使用它们,而其他开发人员因 URN 的灵活性而喜欢使用它们。无论选择哪种类型,您都要确保知道如何保证唯一性。
定义命名空间
“Namespaces in XML Recommendation” 没有提供用来定义 XML 命名空间中有何内容的语法。在许多情况下,这种类型的语法定义甚至不是必需的。目前,大多数 XML 命名空间都是在正式规范文档中定义的,这些文档描述元素的名称,以及属性及其语义。这恰好说明了如何正式定义所有的 W3C 命名空间(请参阅 http://www.w3.org/TR/xslt 上的 XSLT 1.0 规范,以查看相关示例)。
在定义了某个命名空间之后,软件开发人员按照规范中所概述的那样实现该命名空间。例如,MSXML 3.0、Xalan 和 Saxon 都是对 XSLT 1.0 规范的实现。对这些实现进行硬编码,以便查找那些属于 XSLT 1.0 命名空间 (http://www.w3.org/1999/XSL/Transform) 的元素。要使用这些实现,您需要向它们提供一个正确使用 XSLT 1.0 命名空间中名称的 XML 文档(下一节将介绍这方面的详细信息)。如果要更改 XSLT 1.0 命名空间中的任何内容,支持软件将必须进行更新。
XML 架构工作组 (http://www.w3.org/XML/Schema) 已经合并了一个新规范(XML 架构),该规范为在命名空间中定义元素、属性和类型定义了一个基于 XML 的语法。XML 架构最终使得提供命名空间的语法定义成为可能,如下所示。
<schema xmlns='http://www.w3.org/2000/10/XMLSchema' targetNamespace='http://www.develop.com/student' elementFormDefault='qualified' > <element name='student'> <complexType> <sequence> <element name='id' type='long'/> <element name='name' type='string'/> <element name='language' type='string'/> <element name='rating' type='double'/> </sequence> </complexType> </element> </schema>
本例定义的 http://www.develop.com/student 命名空间包含五个命名元素:student、id、name、language 和 rating。此架构不仅提供命名空间,而且还提供其他元数据,例如,student 子元素的顺序以及它们的类型。
在有了语法命名空间定义(例如,那些由 XML 架构提供的定义)时,就可以构建更高级的软件,以便在运行时利用名称和类型信息。XML 架构仍然未定义所定义元素和属性的语义,因此仍将需要一个随附的规范。将来,大多数 XML 命名空间都将通过规范和架构定义同时定义。
使用命名空间
我将命名空间的使用过程定义为:使用 XML 文档中给定命名空间中的一个或多个元素或属性。这要求您了解如下由 “Namespaces in XML Recommendation” 概述的语法:用命名空间标识符限定元素名称和属性名称。
元素和属性的名称实际上都由两部分组成:一个命名空间名称和一个本地名称。这样的两部分名称就是所谓的限定名或 QName。
在 XML 文档中,我们使用命名空间前缀来限定元素和属性的本地名称。前缀实际上只是命名空间标识符 (URI) 的缩写,URI 通常相当长。前缀首先通过命名空间声明映射到命名空间标识符。命名空间声明的语法是:
xmlns:<prefix>='<namespace identifier>'
命名空间声明看起来就像(元素的)属性,但是从文档的逻辑结构来看,它们不被正式视为属性(即,在使用 DOM 时,它们将不出现在元素的属性集中)。
命名空间前缀被视为在声明元素以及它的任何子代元素的作用域内。声明的前缀可用在任何元素或属性名称的前面(用冒号分隔,例如,s:student)。这个包括前缀的完整名称是限定名 (QName) 的词法形式:
QName = <prefix>:<local name>
前缀通过映射到当前位于作用域中的前缀的命名空间标识符与元素或属性关联。
让我们假设某个开发人员希望使用 XSLT 1.0 命名空间。他将需要提供一个命名空间声明,以便将任意前缀映射到正式的 XSLT 1.0 命名空间标识符 (http://www.w3.org/1999/XSL/Transform)。然后,只需在该开发人员希望从 XSLT 1.0 命名空间中使用的每个元素或属性前面加上相应的前缀,如下例所示:
<x:transform version='1.0' xmlns:x='http://www.w3.org/1999/XSL/Transform' > <x:template match='/'> <hello_world/> </x:template> </x:transform>
上例显示了在命名空间中引用元素的语法。前缀为 “x” 的每个元素都来自 http://www.w3.org/1999/XSL/Transform 命名空间,而没有前缀的任何元素(例如,hello_world)都不来自命名空间。处理器现在可以区分 XSLT 1.0 编程构造和将要输出的文本元素(例如,hello_world)。如果 XSLT 1.0 命名空间中有一个字符拼错了,则 XSLT 1.0 处理器将无法将该文档识别为它能够理解的词汇。
在本质上,每个元素现在都有一个由两部分组成的名称:一个命名空间标识符和一个本地名称。这两个名称组合在一起通常称作命名空间名称(注意:这不同于 QName,QName 由前缀和本地名称组合而成)。
下面的 XML 文档是另一个示例,它显示了如何从本专栏前面显示的 XML 架构定义使用元素:
<d:student xmlns:d='http://www.develop.com/student'> <d:id>3235329</d:id> <d:name>Jeff Smith</d:name> <d:language>C#</d:language> <d:rating>9.5</d:rating> </d:student>
请注意,无论命名空间是如何定义的,引用它们的语法都是相同的。
当文档使用多个命名空间中的元素或属性时,通常针对给定的元素进行多个命名空间声明,如下例所示:
<d:student xmlns:d='http://www.develop.com/student' xmlns:i='urn:schemas-develop-com:identifiers' xmlns:p='urn:schemas-develop-com:programming-languages' > <i:id>3235329</i:id> <name>Jeff Smith</name> <p:language>C#</p:language> <d:rating>9.5</d:rating> </d:student>
在这里,student 和 rating 来自同一个命名空间,而 id 和 language 分别来自不同的命名空间,但是 name 不属于命名空间。
命名空间前缀还可以通过在嵌套作用域中重新声明来进行重写,如下所示:
<d:student xmlns:d='http://www.develop.com/student'> <d:id>3235329</d:id> <d:name xmlns:d='urn:names-r-us'>Jeff Smith</d:name> <d:language>C#</d:language> <d:rating>35</d:rating> </d:student>
在本例中,除了 name 元素,所有的内容都来自同一个命名空间 — urn:names-r-us 命名空间。尽管可以重新声明命名空间前缀,但是却无法取消对命名空间前缀的声明。例如,下面的声明是非法的:
<d:student xmlns:d='http://www.develop.com/student'> <d:id xmlns:d=''>3235329</d:id> ?·?·?· </d:student>
对于大多数软件开发人员来说,面向前缀的语法(用来在 XML 命名空间中引用内容)是相当直观的。如果 “Namespaces in XML Recommendation” 只包含这些内容,则命名空间所引起的混淆会小得多。
默认命名空间
可以使用另一种类型的命名空间声明来将命名空间标识符与元素名称相关联。这就是所谓的默认命名空间声明,它使用下面的语法:
xmlns='<namespace identifier>'
请注意,这里没有前缀。在针对某个元素使用默认命名空间声明时,其作用域中的所有非限定元素名称都自动与指定的命名空间标识符相关联。然而,默认命名空间声明决不会影响属性。如果要将属性与命名空间标识符相关联,唯一的方法就是使用前缀。
请考虑下例:
<d:student xmlns:d='http://www.develop.com/student' xmlns='urn:foo' id='3235329' > <name>Jeff Smith</name> <language xmlns=''>C#</language> <rating>35</rating> </d:student>
在这里,“student” 来自 http://www.develop.com/student 命名空间,而 “name” 和 “rating” 来自默认命名空间 urn:foo。id 属性不属于命名空间,这是由于属性不会自动与默认的命名空间标识符相关联。
本例还阐释了您可以取消对默认命名空间的声明(只需将默认的命名空间标识符重新设置为空字符串),如 language 元素所示(请记住,对于前缀声明不能这样做)。因此,language 元素也不属于命名空间。
默认命名空间的语法旨在提高方便程度,但是它们会导致更多的混淆,而不是带来更大的价值。这种混淆通常源自如下事实:元素和属性以不同的方式处理,而且嵌套元素被指定为默认的命名空间标识符也不是立即可见的。然而,除了属性起作用时,在前缀和默认命名空间之间进行选择最终将主要是样式方面的问题。
webservice:
uddi(Universal Description, Discovery, and Integration),wsdl(Web Services Description Language),soap(Simple Object Access Protocol )都是webservice中用到的技术,uddi指一种基于soap通信的注册机构,里面存储着每个web服务的wsdl信息,当调用web服务时就通过查询uddi获取web服务的wsdl信息;wsdl存储着web服务的一系列参数信息,比如所用语言,编码方式等;soap主要用来通信用。