<!DOCTYPE xsl:stylesheet [<!ENTITY nbsp " ">]>
personally I wouldn't bother, #160 isn't any harder to type than nbsp,
and having the doctype there can cause problems with some systems, which
use it as a hint to request stylesheet validation, thus generating an
error on every element as this dtd doesn't define any elements.
<!-- subhead key -->
<xsl:key name="subhead" match="/document/section"
use="translate(substring(./title,1,1),$lochars,$upchars)" />
This is an XSLT2 feature, XSLT 1.0 does not allow variables in key
definitions. If you are using xslt2 though it's simpler to get rid of
the variables and use
<!-- subhead key -->
<xsl:key name="subhead" match="/document/section"
use="upper-case(substring(title,1,1))" />
(you never need to start an xpath with ./)
similarly of course you can use upper-case in the key() function, but...
count(. |
key('subhead',translate(substring(./title,1,1),$lochars,$upchars))[1])
This is muenchian grouping, and is much more simply expressed in xslt2 using
<xsl:for-each-group select="/document/section"
group-by="upper-case(substring(title,1,1))">
then to access the members of the group, replace
"key('subhead',$initial) by current-group()
so... I think your stylesheet would be fine as an example of muenchian
grouping in xslt 1 if you made the key definition legal by getting rid
of the variable references:
<xsl:key name="subhead" match="/document/section"
use="translate(substring(./title,1,1),'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ)"
/>
but in xslt2 such idiomatic uses of muenchian grouping can more or less
automatically be converted to xsl:for-each-group, which probably doesn't
make much difference to the way the generated code runs, but makes it
rather more readable.
David
________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs.
________________________________________________________________________
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--