Subject: Re: [xsl] Best practice for typing? From: "David Birnbaum djbpitt@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Sun, 24 Nov 2019 02:15:08 -0000 |
Dear Dimitre, Pieter, and Michael, Thank you all for the informative and helpful responses! Best, David On Sat, Nov 23, 2019 at 2:18 AM Michael Kay mike@xxxxxxxxxxxx < xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > Declaring the type on xsl:param is always good practice. > > Declaring the type on xsl:variable is also good practice, though I don't > tend to bother if it's obvious, e.g. <xsl:variable name="x" select="12"/>. > > Declaring the type on xsl:with-param can be useful documentation for > someone reading the code, in cases where the type isn't obvious, but it's > not something I regard as important. > > Declaring the return type on functions and templates is also good > practice; I always do it for functions, but I tend not to bother for > templates if they are constructing new elements, since that's usually > obvious. > > In Saxon, I think the only case where declaring a type is likely to incur > a significant run-time cost is with maps: checking that a map conforms to > its declared type can be expensive, though Saxon does try to keep track of > the type information through map modifications in many cases. By contrast, > providing type information can sometimes enable very worthwhile > optimizations. For example with the expression $x/firstName, it's very > useful to know statically that $x is a single node: this not only avoids a > run-time check, it can also avoid a sort operation (but actually, we should > get into the habit of writing this as $x!firstName instead). Similarly with > xxx[$i] it is very useful to know in advance that $i is an integer. > > Michael Kay > Saxonica > > On 23 Nov 2019, at 01:44, David Birnbaum djbpitt@xxxxxxxxx < > xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > Dear xsl-list, > > Is there a consensus about best practice with respect to possibly > redundant typing? For example, we can specify a type using @as on > corresponding <xsl:param> and <xsl:with-param> elements, but if the type is > specified on <xsl:param>, it seems as if that might make it redundant also > to specify it on <xsl:with-param>, since using the wrong type at the level > of <xsl:with-param> will be caught by the type specification on <xsl:param> > anyway. Similarly, if I construct the return value of a function by using > <xsl:sequence> inside the body of the function, I can specify the typing on > <xsl:sequence>, but also on <xsl:function>, and it seems as if specifying > it in either of those places will catch the same errors as specifying in > both. (I am only beginning to learn to use schema-aware processing, and > therefore less certain about how specifying @type when constructing an > interim element or attribute interacts with specifying @as when using it.) > > Is there consensus among XSLT developers about whether it might be better > to use @as everywhere it is allowed, or, alternatively, better to avoid > using it redundantly? What is the practice of other readers of this list? > > Thanks, > > David > djbpitt@xxxxxxxxx > XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list> > EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/293509> (by > email) > > > XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list> > EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/3318727> (by > email <>)
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Best practice for typing?, Michael Kay mike@xxx | Thread | Re: [xsl] Best practice for typing?, Liam R. E. Quin liam |
Re: [xsl] Can Watch XSLT Training d, Liam R. E. Quin liam | Date | Re: [xsl] Best practice for typing?, Liam R. E. Quin liam |
Month |