Subject: [xsl] Re: Re: On XSLT 2.0 Writing Styles From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Sat, 11 Oct 2003 19:55:51 +0200 |
Thank you, Mike. It is rare to see such a deep analysis on this topic -- I hope it will find its place in the XSLT FAQ. Apart from purely stylistic reasons, I have found one case where the XSLT style simply cannot be transformed completely into the non-xml style. This happens, when we need to define and use variables, whose value is a sequence. The variables that can be defined in an XPath expression are of the form: for $someVar in $XPathExpression return and it works when we need a variable with atomic value. However, it is not possible using the above syntax to define a variable, whose value is a sequence. Thus, if I would need to have my code in a single XPath expression, I would have to write: <xsl:sequence select= "f:scanIter($arg1 - 1, $arg2, $arg3) , f:apply($arg2, f:scanIter($arg1 - 1, $arg2, $arg3)[last()])" /> because f:scanIter() returns a sequence and it is impossible to write: "for $vIterMinus in f:scanIter($arg1 - 1, $arg2, $arg3) return $vIterMinus, f:apply($arg2, $vIterMinus[last()])" But writing the first expression above will cause f:scanIter($arg1 - 1, $arg2, $arg3) to be calculated twice. Therefore, the more efficient way to express this is using XSLT-style: <xsl:variable name="vIterMinus" select="f:scanIter($arg1 - 1, $arg2, $arg3)"/> <xsl:sequence select= "$vIterMinus, f:apply($arg2, $vIterMinus[last()])"/> Thank you once again for this nice discussion. ===== Cheers, Dimitre Novatchev. http://fxsl.sourceforge.net/ -- the home of FXSL "Michael Kay" <mhk@xxxxxxxxx> wrote in message news:000001c39018$87901f10$6401a8c0@xxxxxxxxxx > > > > I understand this as personal preference or is this > > preference based on some objective criteria? > > It's based on instinctive judgements about the engineering quality of > the code, but it's far too early to judge whether my instincts are > right. > > > > I would appreciate your opinion on how do these two styles -- > > long (20-line > > +) XPath expressions versus xslt-structured style -- score in > > +readability, > > compactness, flexibility, efficiency and maintainability. > > There has been an ongoing debate about the merits of using XML syntax > versus non-XML syntax for a while now, and I don't think it's going to > go away. It promises to be one of these perennials like "elements vs > attributes". > > Some people seem to take an instinctive dislike to having attributes in > an XML document whose content is 20 lines long. Part of the rationale is > that the newlines don't survive XML parsing, but the newlines are > essential to the readability of the code. > > I think it's going to be quite unusual to see XQuery parsers that report > more than one syntax error in a single compile run. The grammar is not > robust enough to allow easy recovery from syntax errors, though the > introduction of semicolons as separators in the latest draft helps. > Reporting multiple errors in XSLT is easy because of the 3-phase parsing > approach (XML parsing first, then XSLT, then XPath). This gives a > definite advantage when you're doing something on the DocBook scale. > > > > In other words, why should we prefer the "XSLT style" to the > > "XQuery style"? > > > I think the advantages of an XML-based syntax are: > > (a) it's useful where the stylesheet includes large chunks of stuff to > copy into the result document > > (b) it's useful when you want to transform stylesheets or to do any kind > of reflection or introspection > > (c) it reuses all the XML machinery such as character encodings, base > URIs, entity references > > (d) it's much easier to provide user or vendor extensions to the > language in a controlled way. > > But there's no doubt that the XQuery style makes it much easier to write > short queries. > > Michael Kay > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Re: On XSLT 2.0 Writing S, Michael Kay | Thread | Re: [xsl] Re: On XSLT 2.0 Writing S, Lars Nyman |
RE: [xsl] Re: On XSLT 2.0 Writing S, Michael Kay | Date | Re: [xsl] Re: On XSLT 2.0 Writing S, Lars Nyman |
Month |