Introduction

This is the Simple XML Data Manipulation Language(SiXDML) demo. It runs against an instance of the Apache Xindice database.

To download and install SiXDML on your machine visit the SiXDML on Xindice project.

NOTE: Since there is no concept of users currently implemented in this demo it is possible for users to trash the work of others via the DROP COLLECTION, DELETE, DROP INDEX, DROP CONSTRAINTS commands as well as overwrite the work of others. To prevent this, I suggest creating a new collection using the CREATE COLLECTION command and working from that context.

Enter Query Expression

Example Queries

CREATE COLLECTION barbecue ; CREATE COLLECTION barbecue/spare-ribs ; CREATE COLLECTION bookstore CONSTRAINED BY http://www.25hoursaday.com/books.xsd ; INSERT http://www.25hoursaday.com/books.xml INTO COLLECTION bookstore;
INSERT %<% <bk:bookstore xmlns:bk="urn:bookstore-schema"> <bk:book genre="Fantasy"> <bk:title>The Hobbit</bk:title> <bk:author> <bk:first-name>J.R.R.</bk:first-name> <bk:last-name>Tolkien</bk:last-name> </bk:author> <bk:price>14.99</bk:price> </bk:book> </bk:bookstore> %>% NAMED fantasy-books.xml INTO COLLECTION bookstore; INSERT http://www.xml-schema.com/examples/schema/editor.xml INTO COLLECTION bookstore; CONSTRAIN COLLECTION bookstore WITH http://www.25hoursaday.com/books.xsd ; DROP CONSTRAINTS ON COLLECTION bookstore;
SHOW CONSTRAINTS ON COLLECTION barbecue ; SHOW CONSTRAINTS ON COLLECTION bookstore; DROP editor.xml FROM COLLECTION bookstore ; DROP COLLECTION barbecue/spare-ribs ;
DROP COLLECTION bookstore; CREATE INDEX struct-index OF TYPE STRUCTURE_INDEX WITH KEY="/author/last-name", ELEMENT="/bookstore/book" ON COLLECTION barbecue ; CREATE INDEX val-index OF TYPE VALUE_INDEX WITH KEY="/name", ELEMENT="/document/person" ON COLLECTION barbecue ; CREATE INDEX text-index OF TYPE TEXT_INDEX WITH KEY="/name", ELEMENT="/document/person" ON COLLECTION foo ;
SHOW INDICES ON COLLECTION barbecue ; SHOW INDICES ON COLLECTION bookstore ; DROP INDEX val-index FROM COLLECTION barbecue; DROP INDEX struct-index FROM COLLECTION barbecue;
DROP INDEX text-index FROM COLLECTION barbecue; SHOW COLLECTION barbecue ; SHOW COLLECTION bookstore ; NAMESPACE fo="http://www.w3.org/1999/XSL/Format";
SELECT count(//*) FROM bookstore/books.xml USING ROOT="fo:root" AND TRANSFORM WITH XSLT IN http://www.renderx.com/Tests/fo2html/fo2html.xsl ;
NAMESPACE bk = "urn:bookstore-schema";
SELECT //bk:title FROM COLLECTION bookstore ;
SELECT /* FROM COLLECTION bookstore ; NAMESPACE bk = "urn:bookstore-schema";
SELECT //bk:title[text()="I,Robot"] FROM bookstore/books.xml AND TRANSFORM WITH XSLT IN http://www.25hoursaday.com/title.xsl ;
NAMESPACE bk = "urn:bookstore-schema";
SELECT //bk:title[text()="I,Robot"] FROM bookstore/books.xml AND TRANSFORM WITH XSLT IN %<% <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:bk="urn:bookstore-schema"> <xsl:template match="/"> <HTML> <HEAD><TITLE>TRANSFORM RESULTS</TITLE></HEAD> <BODY><xsl:apply-templates/></BODY> </HTML> </xsl:template> <xsl:template match="bk:title"> <H1><xsl:value-of select="." /></H1> </xsl:template> </xsl:stylesheet> %>% ;
SELECT count(//*) FROM bookstore/books.xml; SELECT count(//*) FROM bookstore/books.xml USING ROOT="total-element-count" ; NAMESPACE bk = "urn:bookstore-schema"; SELECT /* FROM COLLECTION bookstore WHERE count(//bk:book)>1 ; NAMESPACE bk = "urn:bookstore-schema"; SELECT /* FROM COLLECTION bookstore WHERE boolean(//bk:book) USING ROOT="bk:bookstore-root";
NAMESPACE bk = "urn:bookstore-schema";
INSERT %<% <!-- The following element is a book --> %>% BEFORE //bk:book IN bookstore/books.xml ;
NAMESPACE bk = "urn:bookstore-schema";
INSERT %<% <bk:book xmlns:bk="urn:bookstore-schema" genre="Fantasy/Comedy"> <bk:title>Interesting Times</bk:title> <bk:author> <bk:first-name>Terry</bk:first-name> <bk:last-name>Pratchett</bk:last-name> </bk:author> <bk:price>8.99</bk:price> </bk:book> %>% AFTER /bk:bookstore/bk:book[1] IN COLLECTION bookstore ;
NAMESPACE bk = "urn:bookstore-schema";
INSERT %<% <bk:book xmlns:bk="urn:bookstore-schema" genre="Fantasy/Comedy"> <bk:title>Men At Arms</bk:title> <bk:author> <bk:first-name>Terry</bk:first-name> <bk:last-name>Pratchett</bk:last-name> </bk:author> <bk:price>8.99</bk:price> </bk:book> >% AT //bk:bookstore IN COLLECTION bookstore ;
NAMESPACE bk = "urn:bookstore-schema";
INSERT ATTRIBUTE WITH NAME="location", VALUE="Atlanta" INTO //bk:book IN bookstore/fantasy-books.xml ;
NAMESPACE bk = "urn:bookstore-schema";
INSERT ATTRIBUTE WITH NAME="xmlns:sixdml", VALUE="http://www.25hoursaday.com/examples/" INTO //bk:bookstore IN bookstore/fantasy-books.xml ;
NAMESPACE bk = "urn:bookstore-schema";
INSERT ATTRIBUTE WITH NAME="bk:status", VALUE="available", NSURI="urn:bookstore-schema" INTO //bk:book IN COLLECTION bookstore ;I
NAMESPACE bk = "urn:bookstore-schema";
REPLACE //bk:price WITH %<% <bk:price xmlns:bk="urn:bookstore-schema">Unavailable</bk:price> <![CDATA[ Prices are being reduced by 20% or 25% if > $10 ]]> <bk:rating xmlns:bk="urn:bookstore-schema" >9/10</bk:rating> %>% IN COLLECTION bookstore ;
RENAME //@genre TO section IN COLLECTION bookstore ;
RENAME //bk:bookstore TO library IN COLLECTION bookstore ; RENAME //library TO bk:bookstore WITH NSURI="urn:bookstore-schema" IN COLLECTION bookstore ; NAMESPACE bk = "urn:bookstore-schema";
DELETE /bk:bookstore/bk:book/bk:price FROM COLLECTION bookstore WHERE number(/bk:bookstore/bk:book/bk:price)>10 ;
DELETE //comment() FROM COLLECTION bookstore ;

Valid XHTML 1.0!