blob: bf638a989b169bf7ff27e6739b10fe3a737c4e50 [file] [log] [blame]
package xmlcursor.xpath;
import java.io.*;
import org.apache.xmlbeans.*;
/**
* @owner: ykadiysk
* Date: Jun 7, 2004
* Time: 11:21:47 AM
*/
public class CustomerTest {
// public class XMLBeanXQueryTest {
static String sXml="<?xml version=\"1.0\"?>\n" +
"<!DOCTYPE book SYSTEM \"book.dtd\">\n" +
"\n" +
"<book>\n" +
" <title>Data on the Web</title>\n" +
" <author>Serge Abiteboul</author>\n" +
" <author>Peter Buneman</author>\n" +
" <author>Dan Suciu</author>\n" +
" <section id=\"intro\" difficulty=\"easy\" >\n" +
" <title>Introduction</title>\n" +
" <p>Text ... </p>\n" +
" <section>\n" +
" <title>Audience</title>\n" +
" <p>Text ... </p>\n" +
" </section>\n" +
" <section>\n" +
" <title>Web Data and the Two Cultures</title>\n" +
" <p>Text ... </p>\n" +
" <figure height=\"400\" width=\"400\">\n" +
" <title>Traditional client/server architecture</title>\n" +
" <image source=\"csarch.gif\"/>\n" +
" </figure>\n" +
" <p>Text ... </p>\n" +
" </section>\n" +
" </section>\n" +
" <section id=\"syntax\" difficulty=\"medium\" >\n" +
" <title>A Syntax For Data</title>\n" +
" <p>Text ... </p>\n" +
" <figure height=\"200\" width=\"500\">\n" +
" <title>Graph representations of structures</title>\n" +
" <image source=\"graphs.gif\"/>\n" +
" </figure>\n" +
" <p>Text ... </p>\n" +
" <section>\n" +
" <title>Base Types</title>\n" +
" <p>Text ... </p>\n" +
" </section>\n" +
" <section>\n" +
" <title>Representing Relational Databases</title>\n" +
" <p>Text ... </p>\n" +
" <figure height=\"250\" width=\"400\">\n" +
" <title>Examples of Relations</title>\n" +
" <image source=\"relations.gif\"/>\n" +
" </figure>\n" +
" </section>\n" +
" <section>\n" +
" <title>Representing Object Databases</title>\n" +
" <p>Text ... </p>\n" +
" </section>\n" +
" </section>\n" +
"</book>";
static String sXml1="<report>\n" +
" <section>\n" +
" <section.title>Procedure</section.title>\n" +
" <section.content>\n" +
" The patient was taken to the operating room where she was placed\n" +
" in supine position and\n" +
" </section.content> </section></report>";
public static void test_xpath(int id, String xml, String xpath) {
try {
System.out.println("\n====== test"+id+": "+xpath+" =======");
XmlObject xmlObj = XmlObject.Factory.parse(xml);
XmlObject[] results = xmlObj.selectPath(xpath);
show_result(results);
} catch (Throwable e) {
e.printStackTrace();
}
}
public static void test_xquery(int id, String xmlFile, String xquery) {
try {
System.out.println("\n====== test"+id+": "+xquery+" =======");
XmlObject xmlObj = XmlObject.Factory.parse(sXml);
XmlObject[] results = xmlObj.execQuery(xquery);
show_result(results);
} catch (Throwable e) {
e.printStackTrace();
}
}
private static void show_result(Object[] results) throws Throwable {
for (int i = 0; i < results.length; i++) {
Object node = results[i];
System.out.println("=> class: "+node.getClass()+", obj: "+node);
}
}
public static void test_xpath() {
System.out.println("\n====== xpath test =======");
/*
test_xpath(1, "xml/data/book.xml", "./book/section[@difficulty =
\"easy\"]");
test_xpath(2, "xml/data/book.xml", "./book/section");
test_xpath(3, "xml/data/report1.xml",
"./report/section/section.title[text() = \"Procedure\"]");
*/
// test_xpath(0, sXml, "./book/section");
// test_xpath(1, sXml, "./book/section[@difficulty =\"easy\"]");
test_xpath(2, sXml1,
"./report/section/section.title[text() = \"Procedure\"]");
// test_xpath(3, sXml1,
// "./report/section[section.title = \"Procedure\"]");
// this is not allowed in XPath(but it is OK for XQuery).
// test_xpath(4, "xml/data/report1.xml", "./report/section/section.title =\"Procedure\"");
}
public static void test_xquery() {
System.out.println("\n====== xquery test =======");
test_xquery(1, "xml/data/bib.xml", xquery1);
test_xquery(2, "xml/data/bib.xml", xquery2);
}
/*
static final String xquery1 = "for $b in ./bib/book "
+" where $b/publisher[text() = \"Addison-Wesley\"] and $b[@year > 1992] "
+"return "
+" <book year=\"{ $b/@year }\"> "
+"{ $b/title }"
+"</book>";
static final String xquery2 = "for $b in ./bib/book "
+" where $b/publisher = \"Addison-Wesley\" and $b/@year > 1992 "
+"return "
+" <book year=\"{ $b/@year }\"> "
+"{ $b/title }"
+"</book>";
*/
static final String xquery1 = "for $b in $this/bib/book "
+" where $b/publisher[text() = \"Addison-Wesley\"] and $b[@year > 1992] "
+"return "
+" <book year=\"{ $b/@year }\"> "
+"{ $b/title }"
+"</book>";
static final String xquery2 = "for $b in $this/bib/book "
+" where $b/publisher = \"Addison-Wesley\" and $b/@year > 1992 "
+"return "
+" <book year=\"{ $b/@year }\"> "
+"{ $b/title }"
+"</book>";
public static void main(String[] args) {
test_xpath();
// test_xquery();
}
}
//}