|
[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: XML-QL Follow up
At GMD-IPSI, we have a tool called Jedi which is able to perform SQL/OQL like queries based on internal DOM representations of XML documents. XML element constructors serve the construction of a new DOM in the select-clause. Embedding the query result elements within one result element and XML document constructor, this is all what is needed to generate a new XML document (which can be written to a file, stdout, ...). The from part defines where the data needs to be fetched from and offers join functionality. Join predicates or other selection predicates can be given in the where clause. Access to the queried XML document and its content is realized on top of DOM methods. These are either exposed directly or implement short hand operators, e.g. 'element.attribute' to access element attributes or 'element["name"]' to access the first child element named "name". In the following i give a fairly complex query which constructs a new XML document from three sources, combining local weather forecasts, traveling information and golfclub information to provide an 'integrated' view on multiple sources. The XML "records" of the original sources look like: <golfclub id="platz0001" href="http://www.golffuehrer.de/scripts/ab2.idc?CLUBNR=0001"> <address> <club>Golf- und Land-Club Berlin Wannsee e.V.</club> <street>Golfweg 22</strasse> <zipcode>14109</zipcode> <city>Berlin</city> <telephone>030-8067060</telephone> <fax>-80670610</fax> </address> <greenfee> <normal>100</normal> <weekend>120</weekend> </greenfee> <info> <description>Die Anlage liegt in einer idyllischen markischen Landschaft und bietet fur Golfer jeder Spielstarke aufgrund des machtigen Baumbestandes und teilweise erheblichen Gelandeschwierigkeiten sowohl eine hohe sportliche Herausforderung als auch ein landschaftliches Erlebnis. Enge Bahnen erfordern einen prazisen geraden Drive.</description> <holes>18</holes> <length>6088</length> </info> <policy>Gaste sind willkommen. Clubausweis mit eingetragenem Hdc (34) ist erforderlich. Gaste in Mitgliederbegleitung und nach Voranmeldung.</policy> <handicap> <normal>34</normal> <weekend>34</weekend> </handicap> </golfclub> ------------------------------------------ <route> <from>53757</from> <to>93333</to> <distance>481.9</distance> <time>274</time> <map>5375793333.gif</map> </route> ------------------------------------------ <weather> <zipcode>87724</zipcode> <date>980922</date> <temperature>15</temperature> <rainprob>10</rainprob> <wind>9</wind> <forecast>11</forecast> </weather> ------------------------------------------ QUERY: XML.Document( <queryresult> // constructor for result element select // generates XML-Elements containing information about golf-links, // current weather information and travel information <golfclub id=golfclub.id href=golfclub.href> // setting attributes from original attributes // inserting original golfclub record children as new children golfclub.children(), // inserting information from other documents weather, route </golfclub> from route in ( // all routes which are less than 50km from start city select r from r in XML.Document("route.xml").descendants("route") // instantiates DOM and gets route elements where r["from"].text() == "50987" // Zipcode of city where travel starts and route["distance"].double() < 50.0 ), golfclub in ( // all golfclubs with a normal greenfee < 80 DM select g from g in XML.Document("golf.xml").descendants("golfclub") where g["address"]["zipcode"].text()==r["to"].text() // join with route and g["greenfee"]["normal"].int() < 80 ), weather in ( select w from w in XML.Document("weather.xml").descendants("weather") where w["zipcode"].text()==r["to"].text() ) </queryresult> ) ------------------------ USAGE We use this query language within a XML broker architecture. A Web demo will hopefully be available from our Web server soon (It requires IE5beta currently to render XML results - not used by everyone :-)) ------------------------ IMPORTANT NOTE The presented query facilities have NOT BEEN TAILORED to XML specifics. Rather, the presented query facilities are part of Jedi's scripting capabilities. Jedi offers flexible means to generate wrappers for arbitrary textual sources (based on a failure tolerant parser), as well as to other sources, e.g. accessible via JDBC. The query language is only a simple mean to provide (integrated) views. Therefore, Jedi supports other application scenarios as well: - extracting semi-structured data from text documents, modeling them in XML (used in a BIO-Informatics project) - accessing XML docs, storing them in a relational DBMS - converting relational data to XML documents - accessing Java objects - merging different modeling paradigms within one scripting language, offering uniform syntactic access to all of them. For further information, you can visit Jedi's homepage at: http://www.darmstadt.gmd.de/oasys/projects/jedi/index.html However, the available material concentrates on the built-in failure tolerant parser but detailed descriptions about the scripting facilities are still missing. ( The current language is simple, but proprietary - we try to adapt it to ECMA-Script as much as possible, but will keep query extensions and XML constructors for convenience. ) Gerald Huck German National Research Center for Information Technology (GMD-IPSI) xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev@i... Archived as: http://www.lists.ic.ac.uk/hypermail/xml-dev/ To (un)subscribe, mailto:majordomo@i... the following message; (un)subscribe xml-dev To subscribe to the digests, mailto:majordomo@i... the following message; subscribe xml-dev-digest List coordinator, Henry Rzepa (mailto:rzepa@i...)
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|
|||||||||






