[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [docbook-apps] Collecting glossentries in glossary database
Georges Schmitz wrote:
> Finally I got something working in HTML and I hope, that there are only
> some small changes required, to get it working with FO too (I think
> Jirka Kosek was the last one working on glossary.xsl, perhaps he can
> point out, what is needed).
$Id$ tag from CVS just shows who touched file last time. I did just
small fix, you can see it in CVS history: "Fixed bug #1031851. Target of
link is computed by href.target template."
> I still rely on glossterm/@linkend, the glossary can be (x)included in
> the document further on, so I have no problems with validating the
> document. The only problem remaining is with glossseealso. Either it can
> happen that relevant glossentries are missing, because they didn't
> appear in the document, but were referenced by a glossseealso, or too
> many of them appear in the result, because I gather all those, that were
> referenced by otherterm too. For the moment I work with the latter - I
> declared the following key:
It shouldn't be too hard to get this working correctly. I assume that
you are using solely linkend/otherterm to point to glossentries. Given
following two keys:
<xsl:key name="directly-referenced" match="glossterm[@linkend]"
use="@linkend"/>
<xsl:key name="indirectly-referenced" match="glossseealso[@othertem]"
use="@otherterm"/>
you can test whether context node which is some particular glossentry
should be included:
<xsl:if test="key('directly-referenced', @id) or
(key('directly-referenced', key('indirectly-referenced',
@id)/../@id))">
... copy current glossentry ...
</xsl:if>
> <xsl:for-each select="exsl:node-set($collected.glossary)/glossary">
> <xsl:call-template name="make-glossary"/>
> </xsl:for-each>
> </xsl:template>
>
> I tested all this first in a driver stylesheet, then I checked out, how
> it would fit into the official stylesheets. I copied the two templates
> into common.xsl (they do not generate output dependent markup) and just
> extended the existing <xsl:template match="glossary"> with
> 'name="make-glossary"' - and it worked (in HTML). So actually, their
> would only be one line to be changed.
Using exsl:node-set() should be conditional if you want to have see
something like this in standard distribution. Stylesheets should work
(albeit in limited way) also with XSLT processors that don't support EXSLT.
> 2) the glossseealso problem could bee solved by a two pass copy process
No need, see expression above.
> I can't tell, if my solution is generally working. Eg. as I was looking
> into the stylesheets, I was astonished, that @id is the only attribute
> used for key access so far, at least it was the only one I found. Maybe
> keys are problematic with DocBook stylesheets?
Keys are used very extensively. E.g. see autoidx.xsl code.
--
------------------------------------------------------------------
Jirka Kosek e-mail: jirka@kosek.cz http://www.kosek.cz
------------------------------------------------------------------
Profesionální školení a poradenství v oblasti technologií XML.
Podívejte se na náš nově spuštěný web http://DocBook.cz
Podrobný přehled školení http://xmlguru.cz/skoleni/
------------------------------------------------------------------
S/MIME Cryptographic Signature
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]