[
Lists Home |
Date Index |
Thread Index
]
At 11:15 AM 1/16/2003 -0500, W. E. Perry wrote:
>Jonathan Robie wrote:
>
> > In XQuery, you can remain loosely coupled while improving the figure/noise
> > ratio of your code. The following computes the PE Ratio for IBM:
> >
> > let $stock := document("stocks.xml")/stock[@id="IBM"]
> > return $stock/price / ($stock/revenues - $stock/expenses)
> >
> > I do think this is more elegant than the equivalent SAX or DOM. It is no
> > more tightly coupled.
>
>Oh yes it is. This code presupposes 1) a document of a given name;
I was trying to write something equivalent to Adam's DOM sample, which does
specify the name. However, I agree that there can be real advantages to
accessing this through input() so that any document can be accessed in this
manner:
let $stock := input()/stock[@id="IBM"]
return $stock/price / ($stock/revenues - $stock/expenses)
>2) a specifically-labelled ("IBM") ID on an element in that document; 3)
>specifically-labelled 'price' and 'revenue' information items which are 4)
>specifically presupposed to be part of that document (as opposed to say,
>separately computable or capable of being looked up in some place of greater
>local interest, such as the last trade in a particular market)
Walter, either the DOM program or the XQuery program can look up the names
before using them, and that does provide more flexibility, but again, I was
trying to compare apples to apples, and the DOM fragments that Adam shows
do not do this.
>and 5) [most crucial of all unexamined assumptions here] presupposed to be
>in a form
>against which the computation expressed in the code is directly executable
>(though, of course as 'real' XML the only form that they would necessarily be
>in is Unicode text).
No, the XQuery I showed you does not make this assumption.
The data might be in an XML document that can be accessed and parsed using
the document() function, or it might be in a view of some other resource
such as a relational database.
Jonathan
|