[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: XQuery & XSLT was RE: Verboseness - XML Syntax for XQuery 1.0(XQuery
> This is an important concern. I think you need to be able to do both. > Consider the following path expression: > > foo/(*[@baz] UNION bing) > > I think that duplicates should be eliminated in UNION, INTERSECT, and > EXCEPT. What if you don't want that? You can use FLWR, which allows > iterations over sequences: > > FOR $i IN foo/*[@baz] > RETURN $i, > FOR $j IN foo/@bing > RETURN $j > > So you can get either result. I will argue -- Single path expression vs multiple path expressions looks intuitive to me for getting duplicate nodes or not. Single Path expression => no duplicate nodes, multiple path expression => duplicate nodes might appear. I think the only advantage of this might be that any path expression will *always* terminate..??? Let me try an example (in some abstract syntax) -- Consider the type definition as part (name, price, @subParts::IDREFS -> part) If you just want to know the different subparts of a part, say p1 -- p1/(@subParts->part)*/name the above will result in no duplicates. otherwise, do something like function hedge [part] getSubparts (part p) { hedge [part] h1 = p/@subParts->part); hedge [part] h = []; for (each node n in h1) { append (part) n to h; append getSubparts ((part) n) to h; } return h; } The query will be getSubparts (p1)/name the above will result in duplicates. How do you think??? -- UNION, INTERSECT, EXCEPT are set operations.. their semantics seem well-defined...??? they are not for dealing with hedges..??? please note -- I am sure you know -- to me, hedge is an ordered list of trees, forest is an unordered set of trees ... (i think communication is cleaner if we use the above convention..???) > >b) The data model appears still quite incomplete to me -- do you want to > >use IDREFS to represent ordered list of elements?? -- > > In general, elements do not have IDs, so this would not work. We use node > identity, which is an inherent property of the nodes. In an object oriented > system, you can think of this as the physical address of the node, or you > can pretend that the system automatically numbers the nodes when it parses > the document. There are many ways to implement node identity. I might not agree...??? IDREF is like a foreign key, and IDREFS is like a collection of foreign keys to me (a collection of foreign keys was never really there in any other data model before)... I think IDREF(S) represent an easier way of representing queries and navigation operations than using joins explicitly... ??? In short, I think IDREF and IDREFS are quite useful... > >is document order the only order in which you want to use??? > > No, of course not. > > >for example, consider types -- > >Book, Person, with an IDREFS attribute for Books referring to Person > >representing the list of Authors in one xml document -- so is there a way > >of getting the list of Authors as such without using some additional > >attribute for representing order (as we have to do in the relational > >model)?? -- I think use of IDREFS for representing ordered binary > >relationships without attributes might be useful...??? > > Since most XML does not have an ID for every element, and no XML has ID > attributes for other node types, the IDREFS trick simply will not work. We > use inherent identity instead. > > I think you are searching for the unordered() function, which allows the > system to return, say, a list of authors, in any order it finds efficient. > We also have sorting, of course, which allows you to get things back in the > order you prefer. Precisely not -- my questions at this point are those where the user requires the result in a specific order. Let me give an example -- <Library> <Book name="b1" authors="a2 a1"/> <Person name="P1" personID="a1"/> <Person name="P2" personID="a2"/> </Library> Assume that @authors is of type IDREFS, and @personID is of type ID. The document explicitly says that the authors of b1 are [P2, P1] in that order, which is not the document order. Do you want to use such an order?? If we support only document order and sorting, then I think the above data modeling "tricks"??? *should* not be allowed because you can never get the list of authors of a book in the correct order...??? > You may have noticed the following issue in the XQueryX document: > > <snip> > Issue 8 : Representing // (xqueryx-slash-slash) > > Originator: XMLQuery > Locus: xqueryx > Description: > > In this document we use the constant SLASHSLASH as a fictive axis that > corresponds to the meaning of the "//" operator. In fact, this operator > does not correspond directly to an axis, but to > descendant-or-self::node()/. For example, //para is short for > /descendant-or-self::node()/child::para. Since XQueryX must be able to > translate back to the original XQuery syntax, we currently use SLASHSLASH > to preserve the original operator. > > Is this the best way to represent the // operator in XQueryX? > </snip> > > I didn't find a better way to map this into XQueryX. > > > >I think there might be humans who like to take short-cuts, and take an > >XQueryX query directly and try to modify it -- they might take the > >trouble to learn XQueryX keywords, rather than use the tool for the > >conversion -- others getting involved in the project might feel totally > >out of place if the previous person was using such short-cuts..??? > > Possibly. I used to have a boss who would change the binaries of my > assembly programs by hand if the assembler generated the wrong thing. But > I'm not sure this is what XQueryX was designed for. That is well said.. My comment was (and is) not strong ... I will say this -- I think path expressions look good, parsing it and showing it to me, I think looks bad -- I am *against* representing a parsed form of the path expression -- why was this reversed in the first place??? thanks and regards - murali.
|
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
|