OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-apps message

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