您的位置:知识库 » .NET技术

XPath详解,总结

作者: ktgu  来源: 博客园  发布时间: 2009-04-17 10:39  阅读: 3639 次  推荐: 0   原文链接   [收藏]  
[1] XPath详解,总结
[2] XPath详解,总结
[3] XPath详解,总结

   7.函数及说明:

   值得欣喜的是XPath函数和XSLT,XQuery等共享函数库,函数库为我们提供了功能丰富的各种函数的调用,我们也可以自定义自己的函数。这里不再对每个函数的用法逐一说明,英文好点的朋友直接去看看w3关于XPath函数的介绍吧:http://www.w3.org/TR/xquery-operators 。中文的可以参考这个网站, http://www.w3school.com.cn/xpath/xpath_functions.asp

   XPath在DOM,XSLT及XQuery中的应用

   DOM:

  

Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<title>XPath Test</title>

</head>

<body>

<script language="javascript" type="text/javascript">

var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");

xmlDoc.async
="false";

xmlDoc.load(
"messages.xml");

xmlDoc.setProperty(
"SelectionLanguage", "XPath");

var sPath = "/messages/message[1]//books/*[local-name()='book']";

var bookNodes = xmlDoc.selectNodes(sPath);

document.write(
"<ul>");

for ( var i = 0; i < bookNodes.length; i++) {

document.write(
"<li>" + bookNodes[i].childNodes[0].text + "</li>");

}

document.write(
"</ul>");

</script>

</body>

</html>

   注意:

   我们若使用new ActiveXObject("Microsoft.XMLDOM")则需要注意的是:因为早期的XMLDOM的SelectionLanguage属性默认是正则表达式,不是XPath语言。所以需要指定这样一条语句xmlDoc.setProperty("SelectionLanguage", "XPath"); 以支持XPath查询表达式。.

   若没有指定SelectionLanguage属性值为XPath则要注意以下情况:

  1. 数组下标从0开始(我们知道在XPath查询表达式中数组下标是从1开始的)
  2. 不支持在XPath查询表达式中使用XPath函数。

   XSLT:

   见:我的另外一篇关于如何使用XSLT的一个小示范http://www.cnblogs.com/ktgu/archive/2008/12/14/1354890.html

   XQuery:

   XQuery查询表达式:

 

Code
xquery version "1.0";



<ul>

{

let $i := 0

for $x in doc("C:\Users\Administrator\Desktop\messages.xml")//message[@id=0]//books/*[local-name()='book']

where $x/year>2006

order by $x/year descending

return
<li>{ data($x/name) } </li>

}

</ul>

  返回结果:

 

 

Code
<ul>

<li>Microsoft Visual C# 2008 Step by Step </li>

<li>Professional C# 2008 </li>

</ul>

0
0
 
标签:XML XPath

.NET技术热门文章

    .NET技术最新文章

      最新新闻

        热门新闻