[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [docbook-apps] how to do modular glossaries with 5.0 ?
I fixed the olink collection process so that now it will also collect from a glossary collection, which would enable using olinks. So my statement before about option #1 not working no longer applies if you use the stylesheet from the latest snapshot build. Bob Stayton Sagehill Enterprises bobs@sagehill.net ----- Original Message ----- From: "Bob Stayton" <bobs@sagehill.net> To: "Bergfrid Skaara" <bergfrid.digitaldias@gmail.com>; <docbook-apps@lists.oasis-open.org> Sent: Friday, March 20, 2009 12:38 PM Subject: Re: [docbook-apps] how to do modular glossaries with 5.0 ? > Regarding option #1 using olinks for cross references within a glossary > collection, I don't think this will work with the current setup. The > problem is that the templates that collect the olink target data do not > process an automatic glossary before extracting the target information. > It probably should, but currently does not. So that means the olink > database won't have the target information for the generated glossentries. > You could file that as a bug report on the SourceForge DocBook site so it > gets fixed. > > I think approach #3 is probably easiest. Below is an example XSL code to > the template for glossseealso to add an xsl:when clause when an xlink is > available. It also handles the "See Also" part. It uses mode="xref-to" > to generate the link text for the target entry if the glossseealso element > is empty. > > <xsl:template match="d:glossseealso" mode="glossary.as.list"> > <xsl:variable name="otherterm" select="@otherterm"/> > <xsl:variable name="targets" select="key('id', $otherterm)"/> > <xsl:variable name="target" select="$targets[1]"/> > <xsl:variable name="xhref" select="@xlink:href"/> > > <xsl:choose> > <xsl:when test="$target"> > <fo:basic-link internal-destination="{$otherterm}" > xsl:use-attribute-sets="xref.properties"> > <xsl:apply-templates select="$target" mode="xref-to"/> > </fo:basic-link> > </xsl:when> > <xsl:when test="$xhref"> > <xsl:variable name="idref"> > <xsl:call-template name="xpointer.idref"> > <xsl:with-param name="xpointer" select="$xhref"/> > </xsl:call-template> > </xsl:variable> > > <xsl:variable name="xtargets" select="key('id',$idref)"/> > <xsl:variable name="xtarget" select="$xtargets[1]"/> > > <xsl:call-template name="check.id.unique"> > <xsl:with-param name="linkend" select="$idref"/> > </xsl:call-template> > > <xsl:choose> > <xsl:when test="count($xtarget) = 0"> > <xsl:message> > <xsl:text>XLink to nonexistent id: </xsl:text> > <xsl:value-of select="$idref"/> > </xsl:message> > </xsl:when> > > <xsl:otherwise> > <fo:basic-link internal-destination="{$idref}"> > <xsl:choose> > <xsl:when test="string-length(.) != 0"> > <xsl:apply-templates/> > </xsl:when> > <xsl:otherwise> > <xsl:apply-templates select="$xtarget" mode="xref-to"/> > </xsl:otherwise> > </xsl:choose> > </fo:basic-link> > </xsl:otherwise> > </xsl:choose> > > </xsl:when> > <xsl:when test="$otherterm != '' and not($target)"> > <xsl:message> > <xsl:text>Warning: glossseealso @otherterm reference not found: > </xsl:text> > <xsl:value-of select="$otherterm"/> > </xsl:message> > <xsl:apply-templates mode="glossary.as.list"/> > </xsl:when> > <xsl:otherwise> > <xsl:apply-templates mode="glossary.as.list"/> > </xsl:otherwise> > </xsl:choose> > > <xsl:choose> > <xsl:when test="position() = last()"> > <xsl:text>.</xsl:text> > </xsl:when> > <xsl:otherwise> > <xsl:text>, </xsl:text> > </xsl:otherwise> > </xsl:choose> > </xsl:template> > > > > Bob Stayton > Sagehill Enterprises > bobs@sagehill.net > > > ----- Original Message ----- > From: "Bergfrid Skaara" <bergfrid.digitaldias@gmail.com> > To: <docbook-apps@lists.oasis-open.org> > Sent: Friday, March 20, 2009 10:07 AM > Subject: [docbook-apps] how to do modular glossaries with 5.0 ? > > >> Hi, I'm building multiple glossaries from a modular master glossary >> and find the validation errors triggered by the otherterm constraint >> on glosssee and glossseealso distracting. >> The modularization is done as follows: 1 file for each letter a-z >> containing individual glossentries on that letter + 1 master book file >> for each glossary, xincluding by xml:id from those files. >> >> What I would like most of all is to use the same setup as for master >> bibliography, referencing a single bib. file using bibliomixed, but I >> don't get this to work since the glossentries are split on 26 files. >> My immediate challenge is however validation of the individual files, >> since the otherterm constraint on glosssee and glossseealso uses id >> and not xml:id and only see elements within the same document (file). >> I can live with this, but our non-technical wysiwyg users cannot. >> I'm considering the following options - any pro/con, implementation >> suggestions, and alternative solutions are welcome. >> >> 1) redefine glosssee and glossseealso to behave like olinks by >> replacing otherterm attribute with targetdoc and targetptr and writing >> some templates to handle it (which we are already using) >> 2) suppress the otherterm validation errors by customization (removing >> schematron rules) - guess I'd have to QA the see links manually then >> 3) link by using xlink:href rather than otherterm and write a custom >> template to add and format the generated text (See / See also) >> >> Best regards, Bergfrid Skaara >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: docbook-apps-unsubscribe@lists.oasis-open.org >> For additional commands, e-mail: docbook-apps-help@lists.oasis-open.org >> >> >> >
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]