Subject: RE: XSL Processing to avoid repetitions - Part 2
From: "Fabien Tillier" <f.tillier@xxxxxxxx>
Date: Thu, 17 Jun 2010 11:21:55 +0200
|
Hi Michael.
I am impressed, it does work like a charm...
For readers, I had to correct a few things (empirically, replacing ? by ")
<xsl:function name="exslt:node-set" xmlns:exslt="http://exslt.org/common"
as="node()">
<xsl:param name="node" as="node()"/>
<xsl:sequence select="$node"/>
</xsl:function>
And that fixes it !
Thanks a million
Best regards,
Fabien
-----Message d'origine-----
De : Michael Kay [mailto:mike@xxxxxxxxxxxx]
Envoyi : jeudi 17 juin 2010 11:06
@ : xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Objet : Re: XSL Processing to avoid repetitions - Part 2
Saxon-HE 9.2 doesn't recognize the function exslt:node-set(). It's
actually a no-op in XSLT 2.0, so a workaround is to add the following to
your stylesheet:
<xsl:function name="exslt:node-set"
xmlns:exslt="http://exslt.org/common" as="node()?>
<xsl:param name="node" as="node()?/>
<xsl:sequence select="$node"/>
</xsl:function>
If you don't want to modify the docbook stylesheets you could put this
in a stylesheet that imports docbook.xsl, and then use your importing
stylesheet as the entry point.
I don't have detailed knowledge of the status, but although the XSLT 2.0
docbook stylesheets are still described as expermental, I get the
impression that many people are using them without problems.
Michael Kay
Saxonica
On 17/06/2010 09:48, Fabien Tillier wrote:
> Hi.
> So, now I have an XSL Stylesheet that did work nicely.
> My problem is that I am using the docbook stylesheets, which are expecting
an XSLT processor 1.0.
> I have used Kernow for testing (so Saxon) and then added Saxon (9) to my
java app.
> Sadly, my app failed when transforming my docbook xml to html because my
XSLT processor is now saxon, and not the default 1.0 one (or so I assume it is
the case).
> I know the XSLT 2.0 version of the DB stylesheets are experimental, thus I
cannot use them (or so it seems).
> I have two options.
> - change the XSL provided to a version 1.0 (thus, as I just understood the
2.0 fashion, and version 1.0 seems a lot more complicated, I am a bit afraid)
> - use a different processor "on demand" (which seems complicated too),
either Java internal Xalan or saxon.
>
> Or I may be completely wrong (when using saxon in my app, the message I get
is
> Error on line 357 of docbook.xsl:
> Cannot find a matching 1-argument function named
{http://exslt.org/common}node-set()
> ; SystemID: jndi:/localhost/CerepWeb/xsl/docBook/xsl/html/docbook.xsl;
Line#: 357; Column#: -1
> net.sf.saxon.trans.XPathException: Cannot find a matching 1-argument
function named {http://exslt.org/common}node-set()
> )
>
> Any help from you, guys ?
> Best regards,
> Fabien
>
>
> -----Message d'origine-----
> De : Fabien Tillier [mailto:f.tillier@xxxxxxxx]
> Envoyi : mercredi 16 juin 2010 16:37
> @ : xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Objet : RE: XSL Processing to avoid repetitions
>
> Yes !
> Sorry for being so blind.
> Your code works. It is just (I think) that I was messing with the way to set
the "fields"
> Thanks a lot
> Best regards,
> Fabien
>
>
> -----Message d'origine-----
> De : Martin Honnen [mailto:Martin.Honnen@xxxxxx]
> Envoyi : mercredi 16 juin 2010 16:30
> @ : xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Objet : Re: XSL Processing to avoid repetitions
>
> Fabien Tillier wrote:
>
>
>> Thanks for your answer, but it doesn't work for me.
>> I have resent a message with my real data.
>> Maybe your solution would work if I don't change it to fit my data :)
>>
> Andrew already suggested what to do, you simply can nest for-each-group
e.g.
>
> <ol>
> <xsl:for-each-group select="/Results/Row" group-by="CONTRACT">
> <li>
> <xsl:value-of select="current-grouping-key()"/>
> <ol>
> <xsl:for-each-group select="current-group()" group-by="CODE">
> <li>
> <xsl:value-of select="current-grouping-key()"/>
> <ol>
> <xsl:for-each select="current-group()/NUMERO">
> <li>
> <xsl:value-of select="."/>
> </li>
> </xsl:for-each>
> </ol>
> </li>
> </xsl:for-each-group>
> </ol>
> </li>
> </xsl:for-each-group>
> </ol>
|