XML Base学习笔记
张小根
1、XML Base提供了一种通过显式的指定一个基准URI(base URI),并通过此base URI来解析指向外部资源的相对URI的方式。具体是通过指定XML元素的xml:base属性来实现的。
2、目前只有三个有关XML的规范是基于XML Base的,将其作为他们标准引用的一部分:XLink、XML InfoSet、Cannonical XML。其他的很少或者基本上和XML Base无关。XML Namespace使用了URI但不是通过xml:base属性来解析的。XPath没有使用相对URI引用,所以也没有使用XML Base,XSLT使用了与XML Base不兼容的基URI的方式。
3、以下是一个例子:
<?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>
本例中的URIs被解析为下列完整的URIs:
Ø "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"
4、基准URI一定是绝对URI,是根据RFC 2396中的规则计算得到的URI,通过xml:base属性指定的值是基准URI信息,并且xml:base的值可以是绝对URI,也可以是相对URI。
5、某个具体元素的基准URI是由该元素的xml:base属性指定的,如果该元素没有指定xml:base属性,则是由该元素的父元素的URI指定的,如果父元素也没有指定xml:base的话,则是由该文档的xml:base属性所指定的。