[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: [xml-dev] XML Schema: "Best used with the ______ tool"
- From: Boris Kolpackov <boris@codesynthesis.com>
- To: Michael Kay <mike@saxonica.com>
- Date: Fri, 28 Nov 2008 16:37:04 +0200
Hi Michael,
Michael Kay <mike@saxonica.com> writes:
> > XSTL/XQuery compare strings to access an element
>
> You need to get up to date. Decent XSLT/XQuery processors stopped
> doing that years ago!
Yes, I must admit I am not up to date on this. Still, and correct
me if I am wrong, you will need to compare something (e.g., a pointer
or an integer). In the example I mentioned in my previous email, even
if the XSLT/XQuery processor can figure out at the query compile time
(based on the schema information) that the 'people' element can only
contain the 'person' element and skip the element name check (I don't
know if there are any production implementations that do this), you
will presumably still need a map lookup to get to the "age" attribute.
I don't think this can be anywhere close to a single direct memory
access in case of data binding.
> XSLT/XQuery processors can maintain the age as an integer rather than a
> string if they choose, especially if they are schema-aware.
I would imagine they will need to maintain both text and integer
representation (to maintain its lexical form). Also, since the
tree representation is generic, the int value (or long, or double,
etc.) will need to be dynamically allocated which is not cheap.
> However, there's
> a large class of queries and transformations that access the average node
> less than once, and in those cases doing the conversion just-in-time, when
> the value is accessed, is better than doing it just-in-case, when the XML is
> unmarshalled.
I agree with Dennis here in that XQuery can be usable when you need to
access a small subset of an XML document. However, when one needs to
access most of the data, or, worse, access the same data many times,
data binding will have speed/memory advantage.
Then there is the whole aspect of interfacing with the rest of the
world. Assembling text queries from bits and pieces that come from
different sources and then unpacking the results for further
processing does not sound like something that is easy to use.
Finally, nobody said you cannot have both data binding and, say,
XQuery at the same time. Our product, for example, allow one to
run an XPath/XQuery query and get the results as data binding
objects.
Boris
--
Boris Kolpackov, Code Synthesis Tools http://codesynthesis.com/~boris/blog
Open source XML data binding for C++: http://codesynthesis.com/products/xsd
Mobile/embedded validating XML parsing: http://codesynthesis.com/products/xsde
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]