[
Lists Home |
Date Index |
Thread Index
]
Gavin Thomas Nicol wrote:
> The idea was "match by example", where you'd
> give a sample XML fragment as the pattern to match. It was supposed to
> be like "query by example"....
The "query by example" approach can only get you so far. For example, this
XPath expression:
/Cars/Car[contains(MakeModel,'ford')]
could easily be formed in XML syntax as follows:
<Cars>
<Car>
<MakeModel>Ford</MakeModel>
</Car>
</Cars>
This is reminiscent of Examplotron[1]. The primary difference is that
Examplotron is "schema by example", where our intent here is "query by
example".
The difficulty of this approach arises when you try to accommodate the XPath
axes. Soon, the benefits of the XML syntax start to diminish. A different
approach would have to be taken, such as Wayne Steele's contribution[2] last
March. That XML tools could then be used on XPath is valuable, but this no
longer possesses the simplicity and intuitiveness of a "query by example"
approach.
That said, "query by example" works beautifully for applications that don't
need as powerful a query language as, say, XQuery. For applications that
simply require the extraction of XML fragments from large repositories of
XML documents based on certain search criteria, a simple XML-based "query by
example" approach is sufficient, with more sophisticated processing (e.g.
XSLT) commencing outside the database.
<proprietaryExample product="XYZFind Server">
Query for all cars such that 'Color' contains "white", 'MakeModel' contains
"ford" and 'Price' is less than or equal to "$15,000":
<xyz:input xmlns:xyz="http://xyzfind.com...">
<xyz:query>
<Cars xyz:return="no">
<Car xyz:return="yes">
<MakeModel>ford</MakeModel>
<Price><xyz:number le="15000"/></Price>
<Color>white</Color>
</Car>
</Cars>
</xyz:query>
</xyz:input>
</proprietaryExample>
Evan Lenz
http://www.xyzfind.com
[1] http://examplotron.org/
[2] http://www.xmlhack.com/read.php?item=1118
|