Package org.xmldb.api.modules

Examples of org.xmldb.api.modules.XQueryService


        assertEquals(2, result.getSize());
    }

    @Test
    public void selfAxis() throws XMLDBException {
        final XQueryService service =
                storeXMLStringAndGetQueryService("self.xml", self);

        queryResource(service, "self.xml", "/test-self/*[not(self::a)]", 1);
        queryResource(service, "self.xml", "/test-self/*[self::a]", 1);
    }
View Full Code Here


        queryResource(service, "self.xml", "/test-self/*[self::a]", 1);
    }

    @Test
    public void ancestorAxis() throws XMLDBException {
        final XQueryService service =
                storeXMLStringAndGetQueryService("nested3.xml", nested3);

        // test ancestor axis with positional predicate
        queryResource(service, "nested3.xml", "//a[ancestor::a[2]/t = '1']", 1);
        queryResource(service, "nested3.xml", "//a[ancestor::*[2]/t = '1']", 1);
View Full Code Here

        queryResource(service, "nested3.xml", "//a[t = '3'][ancestor-or-self::*[3]/t = '1']", 1);
    }

    @Test
    public void ancestorIndex() throws XMLDBException {
        final XQueryService service =
                storeXMLStringAndGetQueryService("nested2.xml", nested2);

        queryResource(service, "nested2.xml", "//ChildB/ancestor::*[1]/self::ChildA", 1);
        queryResource(service, "nested2.xml", "//ChildB/ancestor::*[2]/self::RootElement", 1);
        queryResource(service, "nested2.xml", "//ChildB/ancestor::*[position() = 1]/self::ChildA", 1);
View Full Code Here

        queryResource(service, "nested2.xml", "(<a/>, <b/>, <c/>)/ancestor::*", 0);
    }

    @Test
    public void precedingSiblingAxis() throws XMLDBException, IOException, SAXException {
        final XQueryService service =
                storeXMLStringAndGetQueryService("siblings.xml", siblings);
        service.setProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        service.setProperty(OutputKeys.INDENT, "no");

        ResourceSet result = queryResource(service, "siblings.xml", "//a[preceding-sibling::*[1]/s = 'B']", 1);
        assertXMLEqual("<a><s>Z</s><n>4</n></a>", result.getResource(0).getContent().toString());
        result = queryResource(service, "siblings.xml", "//a[preceding-sibling::a[1]/s = 'B']", 1);
        assertXMLEqual("<a><s>Z</s><n>4</n></a>", result.getResource(0).getContent().toString());
View Full Code Here

        queryResource(service, "siblings.xml", "(<a/>, <b/>, <c/>)/following-sibling::*", 0);
    }

    @Test
    public void followingSiblingAxis() throws XMLDBException, IOException, SAXException {
        final XQueryService service =
                storeXMLStringAndGetQueryService("siblings.xml", siblings);
        service.setProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        service.setProperty(OutputKeys.INDENT, "no");

        ResourceSet result = queryResource(service, "siblings.xml", "//a[following-sibling::*[1]/s = 'B']", 1);
        assertXMLEqual("<a><s>Z</s><n>2</n></a>", result.getResource(0).getContent().toString());
        result = queryResource(service, "siblings.xml", "//a[following-sibling::a[1]/s = 'B']", 1);
        assertXMLEqual("<a><s>Z</s><n>2</n></a>", result.getResource(0).getContent().toString());
        result = queryResource(service, "siblings.xml", "//a[following-sibling::*[2]/s = 'B']", 1);
        assertXMLEqual("<a><s>A</s><n>1</n></a>", result.getResource(0).getContent().toString());
        result = queryResource(service, "siblings.xml", "//a[following-sibling::a[2]/s = 'B']", 1);
        assertXMLEqual("<a><s>A</s><n>1</n></a>", result.getResource(0).getContent().toString());

        queryResource(service, "siblings.xml", "(<a/>, <b/>, <c/>)/following-sibling::*", 0);

        service.setProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        service.setProperty(OutputKeys.INDENT, "no");
        ResourceSet rs = service.query("let $doc := <doc><div id='1'><div id='2'/></div><div id='3'/></doc> " +
                "return $doc/div[1]/following-sibling::div");
        assertEquals(1, rs.getSize());
        assertXMLEqual("<div id='3'/>", rs.getResource(0).getContent().toString());

        service.setProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        service.setProperty(OutputKeys.INDENT, "no");
        rs = service.query("let $doc := <doc><div id='1'/><div id='2'><div id='3'/></div><div id='4'/><div id='5'><div id='6'/></div></doc> " +
                "return $doc/div/preceding-sibling::div");
        assertEquals(3, rs.getSize());
        assertXMLEqual("<div id='1'/>", rs.getResource(0).getContent().toString());
        assertXMLEqual("<div id='2'><div id='3'/></div>", rs.getResource(1).getContent().toString());
        assertXMLEqual("<div id='4'/>", rs.getResource(2).getContent().toString());
View Full Code Here

        assertXMLEqual("<div id='4'/>", rs.getResource(2).getContent().toString());
    }

    @Test
    public void followingAxis() throws XMLDBException, IOException, SAXException {
        final XQueryService service =
                storeXMLStringAndGetQueryService("siblings.xml", siblings);
        service.setProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        service.setProperty(OutputKeys.INDENT, "no");

        queryResource(service, "siblings.xml", "//a/s[. = 'B']/following::s", 3);
        queryResource(service, "siblings.xml", "//a/s[. = 'B']/following::n", 4);
        ResourceSet result = queryResource(service, "siblings.xml", "//a/s[. = 'B']/following::s[1]", 1);
        assertXMLEqual("<s>Z</s>", result.getResource(0).getContent().toString());
View Full Code Here

        assertXMLEqual("<s>C</s>", result.getResource(0).getContent().toString());
    }

    @Test
    public void precedingAxis() throws XMLDBException {
        final XQueryService service =
                storeXMLStringAndGetQueryService("siblings.xml", siblings);
        service.setProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        service.setProperty(OutputKeys.INDENT, "no");
        queryResource(service, "siblings.xml", "//a/s[. = 'B']/preceding::s", 2);
        queryResource(service, "siblings.xml", "//a/s[. = 'C']/preceding::s", 4);
        queryResource(service, "siblings.xml", "//a/n[. = '3']/preceding::s", 3);
    }
View Full Code Here

    }

    @Test
    public void position() throws XMLDBException, IOException, SAXException {

        final XQueryService service =
                storeXMLStringAndGetQueryService("numbers.xml", numbers);

        queryResource(service, "numbers.xml", "//item[position() = 3]", 1);
        queryResource(service, "numbers.xml", "//item[position() < 3]", 2);
        queryResource(service, "numbers.xml", "//item[position() <= 3]", 3);
        queryResource(service, "numbers.xml", "//item[position() > 3]", 1);
        queryResource(service, "numbers.xml", "//item[position() >= 3]", 2);
        queryResource(service, "numbers.xml", "//item[position() eq 3]", 1);
        queryResource(service, "numbers.xml", "//item[position() lt 3]", 2);
        queryResource(service, "numbers.xml", "//item[position() le 3]", 3);
        queryResource(service, "numbers.xml", "//item[position() gt 3]", 1);
        queryResource(service, "numbers.xml", "//item[position() ge 3]", 2);

        queryResource(service, "numbers.xml", "//item[last() - 1]", 1);
        queryResource(service, "numbers.xml", "//item[count(('a','b')) - 1]", 1);

        String query = "for $a in (<a/>, <b/>, <c/>) return $a/position()";
        ResourceSet  result = service.queryResource("numbers.xml", query);
        assertEquals("XPath: " + query, 3, result.getSize());
        XMLResource resource = (XMLResource)result.getResource(0);
        assertEquals("XPath: " + query, "1", resource.getContent().toString());
        resource = (XMLResource)result.getResource(1);
        assertEquals("XPath: " + query, "1", resource.getContent().toString());
        resource = (XMLResource)result.getResource(2);
        assertEquals("XPath: " + query, "1", resource.getContent().toString());
           

        query = "declare variable $doc { <root>" +
                "<a>1</a><a>2</a><a>3</a><a>4</a><a>5</a><a>6</a><a>7</a>" +
                "</root> }; " +
                "(for $x in $doc/a return $x)[position() mod 3 = 2]";
        result = service.queryResource("numbers.xml", query);
        assertEquals("XPath: " + query, 2, result.getSize());

        query = "declare variable $doc { <root>" +
                "<a>1</a><a>2</a><a>3</a><a>4</a><a>5</a><a>6</a><a>7</a>" +
                "</root> }; " +
                "for $x in $doc/a return $x[position() mod 3 = 2]";
        result = service.queryResource("numbers.xml", query);
        assertEquals("XPath: " + query, 0, result.getSize());

        query = "declare variable $doc { <root>" +
                "<a>1</a><a>2</a><a>3</a><a>4</a><a>5</a><a>6</a><a>7</a>" +
                "</root> }; " +
                "for $x in $doc/a[position() mod 3 = 2] return $x";
        result = service.queryResource("numbers.xml", query);
        assertEquals("XPath: " + query, 2, result.getSize());


        query = "let $test := <test><a> a </a><a>a</a></test>" +
                "return distinct-values($test/a/normalize-space(.))";
        result = service.queryResource("numbers.xml", query);
        assertEquals("XPath: " + query, 1, result.getSize());
        resource = (XMLResource)result.getResource(0);
        assertEquals("XPath: " + query, "a", resource.getContent().toString());

        query = "let $doc := document {<a><b n='1'/><b n='2'/></a>} " +
            "return $doc//b/(if (@n = '1') then position() else ())";
        result = service.queryResource("numbers.xml", query);
        assertEquals("XPath: " + query, 1, result.getSize());
        assertEquals("1", result.getResource(0).getContent().toString());
        //Try a second time to see if the position is reset
        result = service.queryResource("numbers.xml", query);
        assertEquals("XPath: " + query, 1, result.getSize());
        assertEquals("1", result.getResource(0).getContent().toString());

        query = "let $doc := document {<a><b/></a>} " +
        "return $doc/a[1] [b[1]]";
        service.setProperty(OutputKeys.INDENT, "no");
        result = service.queryResource("numbers.xml", query);
        assertEquals("XPath: " + query, 1, result.getSize());
        assertXMLEqual("<a><b/></a>", result.getResource(0).getContent().toString());

        //TODO : make this work ! It currently returns some content
        //query = "let $doc := document {<a><b><c>1</c></b><b><c>a</c></b></a>} " +
View Full Code Here

        //assertEquals("XPath: " + query, 3, result.getSize());
    }

    @Test
    public void last() throws XMLDBException {
        final XQueryService service =
            storeXMLStringAndGetQueryService("numbers.xml", numbers);

        final String query = "<a><b>test1</b><b>test2</b></a>/b/last()";
        final ResourceSet  result = service.queryResource("numbers.xml", query);
        assertEquals("XPath: " + query, 2, result.getSize());
        XMLResource resource = (XMLResource)result.getResource(0);
        assertEquals("XPath: " + query, "2", resource.getContent().toString());
        resource = (XMLResource)result.getResource(1);
        assertEquals("XPath: " + query, "2", resource.getContent().toString());
View Full Code Here

    }


    @Test
    public void numbers() throws XMLDBException {
        final XQueryService service =
                storeXMLStringAndGetQueryService("numbers.xml", numbers);

        ResourceSet result = queryResource(service, "numbers.xml", "sum(/test/item/price)", 1);
        assertEquals("96.94", result.getResource(0).getContent().toString());
View Full Code Here

TOP

Related Classes of org.xmldb.api.modules.XQueryService

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.