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] emphasis role and $depth mod 2 = 1


[moving this over to docbook-apps where such matters are discussed]

The "depth" here is the depth of nesting of emphasis elements.  In a 
regular emphasis element, the text is italic.  If you put an emphasis 
inside an emphasis, then that text should be normal within the italic.  The 
mod 2 alternates them.

The dot.count template is a clever trick to compute the number of 
ancestors.  The dots it is counting are not in the text, but in a number 
generated using xsl:number with level="multiple".  This generates a number 
like 1.1 for a nested emphasis and 1.1.1 for doubly nested.  It counts 
those dots to get the depth of nesting to use in the mod expression.

Bob Stayton
Sagehill Enterprises
DocBook Consulting
bobs@sagehill.net


----- Original Message ----- 
From: "Julie May" <jmay@castlerockresearch.com>
To: <docbook@lists.oasis-open.org>
Sent: Monday, May 28, 2007 3:56 PM
Subject: [docbook] emphasis role and $depth mod 2 = 1


> Hello every one,
>
> Version: docbook-xsl-1.72.0
>
> I hate to customize Docbook code without understanding what possible 
> errors
> code was designed to handle so I am going to ask before removing the 
> test.
>
> In the template <xsl:template match="emphasis">  I am trying to find out 
> why
> the test <xsl:when test="$depth mod 2 = 1"> exists and what it was 
> designed
> for.  Does anyone know?  (This same test is used for quote and may be 
> used
> elsewhere.)
>
> I attempted to trigger the test but failed (by adding 2 then 3 periods to
> the XML text, since this seems to be testing for an odd number of 
> periods).
>
> Thanks,
>
> Julie May
>
> Templates in question:
> <!--lib/lib.xsl-->
> <xsl:template name="dot.count">
>  <!-- Returns the number of "." characters in a string -->
>  <xsl:param name="string"/>
>  <xsl:param name="count" select="0"/>
>  <xsl:choose>
>    <xsl:when test="contains($string, '.')">
>      <xsl:call-template name="dot.count">
>        <xsl:with-param name="string" select="substring-after($string,
> '.')"/>
>        <xsl:with-param name="count" select="$count+1"/>
>      </xsl:call-template>
>    </xsl:when>
>    <xsl:otherwise>
>      <xsl:value-of select="$count"/>
>    </xsl:otherwise>
>  </xsl:choose>
> </xsl:template>
>
> <!--fo/inline.xsl, also exists in html -->
> <xsl:template match="emphasis">
>  <xsl:variable name="depth">
>    <xsl:call-template name="dot.count">
>      <xsl:with-param name="string">
>        <xsl:number level="multiple"/>
>      </xsl:with-param>
>    </xsl:call-template>
>  </xsl:variable>
>
>  <xsl:choose>
>    <xsl:when test="@role='bold' or @role='strong'">
>      <xsl:call-template name="inline.boldseq"/>
>    </xsl:when>
>    <xsl:when test="@role='underline'">
>      <fo:inline text-decoration="underline">
>        <xsl:call-template name="inline.charseq"/>
>      </fo:inline>
>    </xsl:when>
>    <xsl:when test="@role='strikethrough'">
>      <fo:inline text-decoration="line-through">
>        <xsl:call-template name="inline.charseq"/>
>      </fo:inline>
>    </xsl:when>
>    <xsl:otherwise>
>      <xsl:choose>
>        <xsl:when test="$depth mod 2 = 1"><!--this is the line referenced 
> in
> the question-->
>          <fo:inline font-style="normal">
>            <xsl:apply-templates/>
>          </fo:inline>
>        </xsl:when>
>        <xsl:otherwise>
>          <xsl:call-template name="inline.italicseq"/>
>        </xsl:otherwise>
>      </xsl:choose>
>    </xsl:otherwise>
>  </xsl:choose>
> </xsl:template>
>
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: docbook-unsubscribe@lists.oasis-open.org
> For additional commands, e-mail: docbook-help@lists.oasis-open.org
>
>
> 




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