﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-yezhou-文章分类-XML</title><link>http://www.blogjava.net/yezhou/category/11834.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 01 Mar 2007 15:35:32 GMT</lastBuildDate><pubDate>Thu, 01 Mar 2007 15:35:32 GMT</pubDate><ttl>60</ttl><item><title>XPath 简介</title><link>http://www.blogjava.net/yezhou/articles/50107.html</link><dc:creator>叶舟</dc:creator><author>叶舟</author><pubDate>Sat, 03 Jun 2006 03:31:00 GMT</pubDate><guid>http://www.blogjava.net/yezhou/articles/50107.html</guid><wfw:comment>http://www.blogjava.net/yezhou/comments/50107.html</wfw:comment><comments>http://www.blogjava.net/yezhou/articles/50107.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/yezhou/comments/commentRss/50107.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/yezhou/services/trackbacks/50107.html</trackback:ping><description><![CDATA[
		<a href="http://www.lapuasi.com/doc/xpath/">http://www.lapuasi.com/doc/xpath/</a>
		<br />
		<br />
		<p>XPath 同样也是 w3c 的标准之一，他的主要目的是为 xslt 和 xpointer 提供共用的统一的语法，在 XML 文档中进行信息的寻址和数据的检索。他提供了对 string，number，booleans 基本数据类型的操作功能。 XPath 使用类似于普通的文件系统寻址方式，对 XML 中的数据进行匹配(类似于 "/bookstore/book/")。并且 XPath 还提供很多标准库函数，以进行更多复杂的处理操作。</p>
		<h2>XPath 的语法</h2>
		<p>XPath 使用路径表达式在 XML 文档中选择节点/节点集合。下面通过一些实例来看看 XPath 的语法。</p>
		<p>在下面的例子中，使用如下的 XML 文档：</p>
		<code>
				<span class="keyword">&lt;?xml </span>
				<span class="attribute">version</span>
				<span class="keyword">="1.0" </span>
				<span class="attribute">encoding</span>
				<span class="keyword">="ISO-8859-1"?&gt;</span>
				<br />
				<span class="keyword">&lt;</span>
				<span class="item">bookstore</span>
				<span class="keyword">&gt;</span>
				<br />  <span class="keyword">&lt;</span><span class="item">book</span><span class="keyword">&gt;</span><br />    <span class="keyword">&lt;</span><span class="item">title</span><span class="attribute">lang</span><span class="keyword">="eng"&gt;</span>Harry Potter<span class="keyword">&lt;/</span><span class="item">title</span><span class="keyword">&gt;</span><br />    <span class="keyword">&lt;</span><span class="item">price</span><span class="keyword">&gt;</span>29.99<span class="keyword">&lt;/</span><span class="item">price</span><span class="keyword">&gt;</span><br />  <span class="keyword">&lt;/</span><span class="item">book</span><span class="keyword">&gt;</span><br />  <span class="keyword">&lt;</span><span class="item">book</span><span class="keyword">&gt;</span><br />    <span class="keyword">&lt;</span><span class="item">title</span><span class="attribute">lang</span><span class="keyword">="eng"&gt;</span>Learning XML<span class="keyword">&lt;/</span><span class="item">title</span><span class="keyword">&gt;</span><br />    <span class="keyword">&lt;</span><span class="item">price</span><span class="keyword">&gt;</span>39.95<span class="keyword">&lt;/</span><span class="item">price</span><span class="keyword">&gt;</span><br />  <span class="keyword">&lt;/</span><span class="item">book</span><span class="keyword">&gt;</span><br /><span class="keyword">&lt;/</span><span class="item">bookstore</span><span class="keyword">&gt;</span></code>
		<p>对该 XML 可用如下的路径表达式进行数据的检索：</p>
		<ul>
				<li>'/bookstore/book'<br />检索根节点( bookstore )下的 book 节点 
</li>
				<li>'//book'<br />检索文档中所有的 book 节点，不管该节点在 xml 中的什么位置。对于上个例子来说，就是所有 '/bookstore/book' 节点 (当然，如果节点下如果还有 book 节点，那么同样会选择出来) 
</li>
				<li>'//@lang'<br />检索文档中所有名为 lang 的属性，@ 表示属性 </li>
		</ul>
		<p>还可以利用谓词来进行查询：</p>
		<ul>
				<li>'/bookstore/book[1]'<br />检索 bookstore 下的第一个 book 子节点 
</li>
				<li>'/bookstore/book[last()]'<br />检索 bookstore 下的最后一个 book 子节点 
</li>
				<li>'/bookstore/book[last()-1]'<br />检索 bookstore 倒数第二个 book 子节点 
</li>
				<li>'/bookstore/book[position()&lt;3]'<br />检索 bookstore 前两个 book 子节点 
</li>
				<li>'//title[@lang]'<br />检索所有拥有一个名为 lang 的属性的 title 节点 
</li>
				<li>'//title[@lang="eng"]'<br />检索所有拥有一个名为 lang，值为 eng 的属性的 title 节点 
</li>
				<li>'/bookstore/book[price&gt;35.00]/title'<br />检索所有价钱大于 35 的 book 的 title 节点 </li>
		</ul>
		<p>还可以使用*，@*，node()来检索未知的节点：</p>
		<ul>
				<li>'/bookstore/*'<br />检索 bookstore 的所有子节点 
</li>
				<li>'//*'<br />检索文档中的所有节点. 
</li>
				<li>'//title[@*]'<br />检索具有任意属性的 title 节点 </li>
		</ul>
		<p>还可以使用'|'来表示对从多个路径表达式来得到结果集：</p>
		<ul>
				<li>'//book/price | //book/title'<br />检索所有 book 节点下的 price 节点和 title 节点 </li>
		</ul>
		<h2>XPath 的操作符和函数</h2>
		<p>XPath 提供了 "+,-,*,div,&gt;=,&lt;=,or,and" 等操作符进行算术和逻辑的运算。如： '/bookstore/book[price&gt;20 and price&lt;=50]'</p>
		<p>关于 XPath 操作符的详细信息。</p>
		<p>参考： <a href="http://www.w3schools.com/xpath/xpath_operators.asp">http://www.w3schools.com/xpath/xpath_operators.asp</a></p>
		<p>XPath 还提供了数百个库函数，包括字符串，数字，错误等处理的函数。以提供强大的功能。</p>
		<p>参考： <a href="http://www.w3schools.com/xpath/xpath_functions.asp">http://www.w3schools.com/xpath/xpath_functions.asp</a></p>
<img src ="http://www.blogjava.net/yezhou/aggbug/50107.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/yezhou/" target="_blank">叶舟</a> 2006-06-03 11:31 <a href="http://www.blogjava.net/yezhou/articles/50107.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>