📄 querying&transforming xml.htm
字号:
</xsl:for-each></font></span></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><span class="normal105"><font face="宋体" lang="ZH-CN" size="3" class="normal105">相应的XML-QL结构是:</font></span></p>
<p align="JUSTIFY"><span class="normal105"><font face="宋体" lang="ZH-CN" size="3" class="normal105">WHERE
XML-QL pattern<br>
CONSTRUCT output</font></span></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><span class="normal105"><font face="宋体" lang="ZH-CN" size="3" class="normal105">为了比较这两种语言,我们将列举一些XML-QL
W3C建议中的例子说明怎样用我们的方法来写这些查询语言。这些例子的作用对象是下面这个XML:</font></span></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3" class="normal105"><bib><br>
<book year="1995"><br>
<!-- A good introductory text --><br>
<title> An Introduction to Database Systems </title><br>
<author> <lastname> Date </lastname> </author><br>
<publisher> <name> Addison-Wesley </name > </publisher><br>
</book><br>
<book year="1998"><br>
<title> Foundation for Object/Relational Databases: The Third Manifesto
</title><br>
<author> <lastname> Date </lastname> </author><br>
<author> <lastname> Darwen </lastname> </author><br>
<publisher> <name> Addison-Wesley </name > </publisher><br>
</book><br>
</bib></font></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><span class="normal11"><font face="宋体" lang="ZH-CN" size="3" class="normal105">用XML-QL的方法来查询由Addison-Wesley出版社出版的书的作者:</font></span></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3" class="normal105">WHERE
<book><br>
<publisher><name>Addison-Wesley</name></publisher><br>
<author>$a</author><br>
</book><br>
CONSTRUCT $a</font></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><span class="normal11"><font face="宋体" lang="ZH-CN" size="3" class="normal105">用我们的相应的方法为:</font></span></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3" class="normal105"><xsl:for-each
select = "book[publisher/name = 'Addison-Wesley']/author"><br>
<xsl:value-of /><br>
</xsl:for-each></font></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size=3><span class="normal11"><span class="normal105">原先的1997年8月制定的XSL建议<span class="normal105">(</span></span></span></font><span class="normal105"><span class="normal105"><span class="normal11"><a href="../../../www.w3.org/TR/NOTE-XSL.html)" tppabs="http://www.w3.org/TR/NOTE-XSL.html%29"><font face="Albertus (W1)"><span class="normal105">http://www.w3.org/TR/NOTE-XSL.html)</span></font></a><font face="宋体" lang="ZH-CN" size=3><span class="normal105">提出了类似于XML</span><span class="normal11"><span class="normal105">-</span></span><span class="normal105">QL的“按实例查询”(query
by example)语法,但后来这种方式遇到了一些挑战。而目前的类似URL的语法不管是对简单还是复杂的查询限制都能顺利工作。例如:比方我们要得到由几个出版社出版的书的作者,可以简单写为:</span></font></span></span></span></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3"><span class="normal105"><xsl:for-each
select = "book[publisher[name = 'Addison-Wesley' <br>
$or$ name = 'Microsoft Press']]/author"><br>
<xsl:value-of /><br>
</xsl:for-each></span></font></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><span class="normal105"><span class="normal105"><span class="normal105"><span class="normal11"><font face="宋体" lang="ZH-CN" size="3"><span class="normal105">XML-QL还有其他的一些特点</span>:</font></span></span></span></span></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3" class="normal105">4.1变量和连接</font></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3" class="normal105">XML-QL模式允许使用变量,能返回变量和满足条件值的所有数据的捆绑(bindings)集;为了支持连接或更复杂的查询和转换,这项功能是必须的。不过,在需要变量的许多XML-QL查询能够由XSL中的其它方法实现。</font></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3" class="normal105">例如,考虑下面的使用变量的XML-QL查询:</font></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3" class="normal105">
WHERE <br>
<book>$p</> IN "www.a.b.c/bib.xml",<br>
<title>$t</><br>
<publisher><name>Addison-Wesley</></> IN $p<br>
CONSTRUCT <br>
<result><br>
<title>$t</><br>
WHERE <author>$a</> IN $p<br>
CONSTRUCT <author>$a</><br>
</></font></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY" class="normal11"><span class="normal11"><font face="宋体" lang="ZH-CN" size="3" class="normal105">也可以用没有变量的XSL查询语句来实现同样的查询:</font></span></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3" class="normal105"><xsl:for-each
select = "book[publisher/name = "Addison-Wesley"]"><br>
<result><br>
<title><xsl:value-of select="title" /></title><br>
<xsl:for-each select = "author"><br>
<author><xsl:value-of /></author><br>
</xsl:for-each><br>
</result><br>
</xsl:for-each></font></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3" class="normal105">不过要建立连接(join)时变量就有作用了.要选出著于1995年之后的文章的作者,可以这样写:</font></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3" class="normal105">WHERE
</font></p>
<p align="JUSTIFY"> <font face="宋体" lang="ZH-CN" size="3"><span class="normal105"><article><br>
<author><br>
<firstname>$f</><br>
<lastname>$l</><br>
</><br>
</> CONTENT_AS $a In "www.a.b.c./bib.xml"</span></font></p>
<p align="JUSTIFY"> </p>
<p align="JUSTIFY"> <span class="normal105"><font face="宋体" lang="ZH-CN" size="3"><span class="normal105"><book
year = $y><br>
<author><br>
<firstname>$f</><br>
<lastname>$l</><br>
</><br>
</> IN "www.a.b.c/bib.xml",<br>
$y > 1995</span></font></span></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><span class="normal105"><span class="normal105"><font face="宋体" lang="ZH-CN" size="3" class="normal105">CONSTRUCT<br>
<article>$a</></font></span></span></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3" class="normal105">4.2.
对象标识符</font></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3" class="normal105">对象标识符和Skolem一起保证了在输出中产生的元素唯一。另外,
对象标识符在建立图形时很有用.但是,当查询结果是“流”时对象标识符有一些问题,因为它允许XML-QL任何时候在图形的任何位置都可以产生一个元素。结果,不得不在图形成为流之前将它缓存。这给Internet上的数据交换带来的严重的影响。</font></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><span class="normal105"><span class="normal105"><span class="normal105"><span class="normal105"><span class="normal105"><span class="normal105"><span class="normal105"><span class="normal105"><font face="宋体" lang="ZH-CN" size="3"><span class="normal105">4</span></font></span></span></span><font face="宋体" lang="ZH-CN" size="3">.<span class="normal105">3.</span></font></span></span></span><font face="宋体" lang="ZH-CN" size="3"><span class="normal105">
多重XML源的数据集成</span></font></span></span></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3" class="normal105">XML-QL允许每个WHERE语句从不同的文件查询数据.XSL目前只能对单独的XML文件进行查询。要实现多多个XML文件的查询,可以为<xsl:for-each>和<xsl:apply-templates>加上源的属性。</font></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3" class="normal105">4.4.
数据库管理</font></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3" class="normal105">查询语言的一个重要领域是数据库管理功能,包括创建、删除、更新和插入等操作。但在XML-QL和XSL中都没有相应的阐述。</font></p>
<p align="JUSTIFY"></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3">5.<a name="5"></a>
总结</font></p>
<p align="JUSTIFY"><font face="宋体" lang="ZH-CN" size="3" class="normal105">查询XML中的问题与转换和构造结果的能力有密切的关系。XML-QL和XLS的相似之处意味着两者可以取长补短、互相促进。两者的相互协作能够为XML带来强大和通用的查询和转换机制。</font></p>
</td>
</tr>
<tr>
<td colspan="3"><font face="宋体" lang="ZH-CN" size=3> </font> <rev></rev><font face="宋体" lang="ZH-CN" size=3></font>
<hr size="1">
<p align="center"><font face="宋体" lang="ZH-CN"><span class="normal11">[<a href="#top">返回标题</a>][<a href="../resource.htm" tppabs="http://www.xml.org.cn:8188/resource/resource.htm" target="_parent">返回资源</a>][<a href="../../default.asp" tppabs="http://www.xml.org.cn:8188/default.asp" target="_parent">返回首页</a>][<a href="mailto:xmlteam@egroups.com">欢迎投稿</a>]</span></font></p>
<p align="center"><span class="normal11">最后更新:1999年8月17日<br>
<font color="#FF0033" size="-1">本站点所刊文章版权,均归本站点所有。署名作者拥有其著作权。<br>
未经</font><font color="#FF0033"><a href="mailto:xmlteam@egroups.com"><font color="#6666FF" size="-1">允许</font></a></font><font color="#FF0033" size="-1">,不得随意转载,违者必究!!</font>
</span></p>
</td>
</tr>
</table>
<h2 ALIGN="CENTER"> </h2>
<FONT FACE="宋体" LANG="ZH-CN" SIZE=3>
<P ALIGN="JUSTIFY"> </P>
</FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3></FONT>
</BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -