XQuery HTML格式

XQuery 还可用于将 XML 文档转换为 HTML 页面。

让我们举一个例子来看看它是如何工作的:

让我们以一个名为“books.xml”的 XML 文件为例,内容如下:

<bookstore>
    <book category="web">
        <title lang="en">快速入门HTML</title>
        <author>Eric</author>
        <year>2012</year>
        <price>200.00</price>
    </book>
    <book category="children">
        <title lang="en">汇编语言</title>
        <author>Jack</author>
        <year>2005</year>
        <price>600.00</price>
    </book>
    <book category="programming">
        <title lang="en">Java编程思想</title>
        <author>James Gowsling</author>
        <author>Peter Brown</author>
        <author>Sri Bala</author>
        <author>James Linn</author>
        <author>Vaidyanathan Nagarajan</author>
        <year>2003</year>
        <price>400.00</price>
    </book>
    <book category="web" cover="paperback">
        <title lang="en">Web开发入门到高级</title>
        <author>Aryan Tomar</author>
        <year>2013</year>
        <price>150.00</price>
    </book>
</bookstore>

books.xqy:

<ul>
{
for $x in doc("books.xml")/bookstore/book/title
order by $x
return <li>{$x}</li>
}
</ul>

本示例将选择 bookstore 元素下的 book 元素下的所有 title 元素,并按字母顺序返回 title 元素。

现在,创建一个基于 Java 的 XQuery 执行程序来读取 books.xqy,将它传递给 XQuery 表达式处理器,并执行该表达式。

package com.yiidian;

import com.saxonica.xqj.SaxonXQDataSource;

import javax.xml.xquery.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;

public class XQueryTester {
   public static void main(String[] args){  
      try {  
         execute();  
      }  
        
      catch (FileNotFoundException e) {
         e.printStackTrace();  
      }  
        
      catch (XQException e) {
         e.printStackTrace();  
      }  
   }  
  
   private static void execute() throws FileNotFoundException, XQException{  
      InputStream inputStream = new FileInputStream(new File("books.xqy"));
      XQDataSource ds = new SaxonXQDataSource();
      XQConnection conn = ds.getConnection();
      XQPreparedExpression exp = conn.prepareExpression(inputStream);
      XQResultSequence result = exp.executeQuery();
       while (result.next()) {  
         System.out.println(result.getItemAsString(null));  
      }  
   }      
}  

输出结果为:

热门文章

优秀文章