[Home] [By Thread] [By Date] [Recent Entries]
Hi Michael, Michael Kay <mike@s...> 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] |

Cart



