- XML实用技术自学经典
- 伍逸编著
- 1048字
- 2025-02-17 20:31:37
2.4 常见的命名空间
XML格式采用的命名空间标准,可能有成百上千。本节只讨论一些最常见的命名空间。
1.“xml:”命名空间
“xml:”命名空间是一个特例。在每个XML文档中,前缀名“xml”都已经被隐式地绑定到URI http://www.w3.org/XML/1998/命名空间,这是硬编码到所有XML解析器的,用户不必自己声明。这意味着用户可以在自己的XML文档中使用各种特殊属性,如使用xml:lang来设置元素的本地化语言信息。例如,使用如下代码来实现在文档中保存多国语言短语。
<phrases> <phrase id="1"> <text xml:lang="en-gb">Please choose a colour</text> <text xml:lang="en-us">Please choose a color</text> <text xml:lang="zh-CN">请选择颜色</text> </phrase> <phrase id="2"> <text xml:lang="en-gb">How large is your organisation?</text> <text xml:lang="en-us">>How large is your organization?</text> <text xml:lang="zh-CN">你的公司规模多大?</text> </phrase> </phrases>
内置属性名称以“xml:”作为前缀,自定义的属性名不能以“xml:”作为前缀,否则在解析时将发生错误。
在“xml:”命名空间可能遇到的其他属性和标识符还包括:
·xml:space。用于设置下游应用程序应该如何处理解析器传递的空格等字符。xml:space是一个Enumerated类型的属性,它的属性值只能是default或preserve。default表示应用程序可以自行处理空格等字符,preserve则表示应用程序应把空格等字符作为普通文本字符来处理。格式如下。
<网址 xml:space="preserve"> www.it315.org </网址>
·xml:base。提供了一种通过显式的方式指定一个基准URI(base URI),并通过此基准URI来解析指向外部资源的相对URI的方式。以下示例展示了xml:base的应用。
<?xml version="1.0"?> <doc xml:base="http://example.org/today/" xmlns:xlink="http://www.w3.org/1999/xlink"> <head> <title>Virtual Library</title> </head> <body> <paragraph>See <link xlink:type="simple" xlink:href="new.xml">what's new</link>!</paragraph> <paragraph>Check out the hot picks of the day!</paragraph> <olist xml:base="/hotpicks/"> <item> <link xlink:type="simple" xlink:href="pick1.xml">Hot Pick #1</link> </item> <item> <link xlink:type="simple" xlink:href="pick2.xml">Hot Pick #2</link> </item> <item> <link xlink:type="simple" xlink:href="pick3.xml">Hot Pick #3</link> </item> </olist> </body> </doc>
上例中的URI被解析为下列完整的URI。
“what's new”被解析为URI "http://example.org/today/new.xml"
“Hot Pick #1”被解析为URI "http://example.org/hotpicks/pick1.xml"
“Hot Pick #2”被解析为URI "http://example.org/hotpicks/pick2.xml"
“Hot Pick #3”被解析为URI "http://example.org/hotpicks/pick3.xml"
·xml:id。用于表示XML文档元素的唯一标识符。应用程序将所有指定为xml:id的属性视为唯一标识符。
目前只有3个有关XML的规范XLink、XML InfoSet和Cannonical XML是基于XML Base的,将其作为它们标准引用的一部分。
2.xmlns命名空间
xmlns是xml namespace的缩写。xmlns前缀用于声明XML文档的命名空间,xmlns被绑定到URI http://www.w3.org/2000/xmlns/命名空间,这是硬编码到XML解析器。xmlns属性可以在文档中定义一个或多个可供选择的命名空间。该属性可以放置在文档内任何元素的起始标签中。该属性的值类似于URL,它定义了一个命名空间,浏览器会将此命名空间用于该属性所在元素内的所有内容。
3.XML模式(XML Schema)命名空间
此命名空间具有URI,http://www.w3.org/2001/XMLSchema,被用于模式文档中(模式文档用于描述特定的XML格式的合法结构模式)。这个命名空间中包含“W3C XML模式结构规范”和“W3C XML模式数据类型规范”中定义的元素、属性和数据类型,如十进制数据、字符串和布尔值。习惯上常将前缀xs或xsd绑定到此命名空间,但是这纯粹是个人的选择。除了前缀xml和xmlns外,用户可以选择任何自己喜欢的前缀来绑定到命名空间。所以,像下面这样的代码也是完全可以接受的。
<myLongPrefix:schema xmlns:myLongPrefix="http://www.w3.org/2001/XMLSchema"> <!-- rest of document here --> </myLongPrefix:schema>
4.XSLT命名空间
XSLT主要用于将XML文档转换成不同的格式,如其他格式的XML文档、HTML文档,或纯文本文件。XSLT命名空间的URI是http://www.w3.org/1999/XSL/Transform,常用xsl或xslt前缀来绑定到此命名空间。