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] 'endterm' with olinks?


Hi Bob, thank you for your answer.

I decided to pay the price of simplicity, and I'm applying your Approach 2.

It works, but the only issue I'm facing (though it can be limited with
a workaround, see below) is that the generated hot text that should
come from the element identified by 'logout' ('otherid' in your
example) is actually the title of the outer 'simplesect' containing
the element:

(REFERENCED document) [1]
...
 <sect2 xml:id="sect-logout">
      <title>Logout</title>

      <para>Log out from the system</para>

      <bridgehead>Security realm: public</bridgehead>

      <simplesect>
        <title>Definition</title>

        <para
                   xml:id="logout">GET /api/login?action=logout</para>
      </simplesect>
      ...

(REFERENCING document) [2]
        ...
        <row>
          <entry><literal><olink targetdoc="developers-guide"
                                 targetptr="sect-logout">
          <olink targetdoc="developers-guide"
                 targetptr="logout"
                 role="endterm"/></olink></literal></entry>
           ...
        </row>
        ...

(RESULT) [3]
The generated hot text is then

    'the section called “Definition”'

instead of

    'GET /api/login?action=logout'

The issue can be worked around by adding an 'xreflabel' to [1],
containing the same text as the element 'para' (which is very bad
duplication, indeed):
(WORKAROUND) [4]

     <simplesect>
        <title>Definition</title>

        <para xreflabel="GET /api/login?action=logout"
                   xml:id="logout">GET /api/login?action=logout</para>
      </simplesect>
      ...

Maybe I'm overlooking something trivial.

Thank you,
    Giuseppe

On Thu, Feb 2, 2012 at 7:42 PM, Bob Stayton <bobs@sagehill.net> wrote:
>
> This is not a feature that is currently supported, so something original is called for here.  I can think of two approaches, the former more complex but more complete than the latter.
>
> ...
>
> Approach 2.  Create a nested olink with a role attribute, and customize its behavior. When an olink element is processed, if the olink element is not empty, then the stylesheet just does <xsl:apply-templates/> to that content and does not look up the text in the olink database.  So you could do this:
>
> <olink targetptr="chapterid"><olink targetptr="otherid" role="endterm"/></olink>
>
> In order to not create a nested link, you would need to add a template like this to your customization:
>
>
> <xsl:template match="olink[@role = 'endterm']">
>  <xsl:variable name="content">
>   <xsl:apply-imports/>
>  </xsl:variable>
>  <xsl:value-of select="string($content)"/>
> </xsl:template>
>
> You would also want to set this param so the role attribute is not interpreted as an xrefstyle, which would generate warning messages.
>
>  <xsl:param name="use.role.as.xrefstyle" select="0"/>
>
> This template matches the nested olink because of the role value. It then processes that olink with xsl:apply-imports, which would generate a normal active link to the "otherid" element, with text generated from the olink database for "otherid".  Then it takes the string value of the result.  The outer olink supplies the linking wrapper for that text.  With this approach, when you take the string value of the inner olink, you lose any inline formatting, but that's the price of simplicity.  8^)
>
> Bob Stayton
> Sagehill Enterprises
> bobs@sagehill.net
>
>
> ----- Original Message ----- From: Giuseppe Monticelli
> To: docbook-apps@lists.oasis-open.org
> Sent: Wednesday, February 01, 2012 3:06 PM
> Subject: [docbook-apps] 'endterm' with olinks?
>
>
>
> Is there a possibility to emulate with 'olink' the behavior of the attributes 'linkend' and 'endterm' used together in the 'xref' element?
>
> I would like that a couple of my olinks (necessarily used instead of 'xref' in modular documents with XInclude) receive a dedicated cross reference text coming from a particular element, while the cross reference destination should be the beginning of the section in which the element providing the reference text is contained (similarly to Example 15.2 "Xref to a question in qandaentry" at the bottom of http://www.sagehill.net/docbookxsl/CrossRefs.html#OptsGenXref).
>
> Thank you in advance for every hint,
>
>   Giuseppe
>

--
Giuseppe Monticelli :: Funambol, Inc. :: http://docs.funambol.com

MediaHub - Connect Everything Mobile via the Cloud, powered by open source


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]