[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]