Subject: Re: [xsl] glossary sorting/indexing question From: David Carlisle <davidc@xxxxxxxxx> Date: Tue, 20 May 2008 13:02:20 +0100 |
> <!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. ________________________________________________________________________
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] glossary sorting/indexing que, Trevor Nicholls | Thread | RE: [xsl] glossary sorting/indexing, Trevor Nicholls |
[xsl] glossary sorting/indexing que, Trevor Nicholls | Date | RE: [xsl] glossary sorting/indexing, Trevor Nicholls |
Month |