W3C home > Mailing lists > Public > xsl-editors@w3.org > July to September 1998

[2.7.13] Macros

From: G. Ken Holman <gkholman@CanadaMail.com>
Date: Sat, 12 Sep 1998 08:49:46 -0400
Message-Id: <Version.32.19980912074952.00f90e90@CraneSoftwrights.com>
Message-Id: <Version.32.19980912074952.00f90e90@CraneSoftwrights.com>
Message-Id: <Version.32.19980912074952.00f90e90@CraneSoftwrights.com>
Message-Id: <Version.32.19980912074952.00f90e90@CraneSoftwrights.com>
Message-Id: <Version.32.19980912074952.00f90e90@CraneSoftwrights.com>
To: XSL Editors <xsl-editors@w3.org>
I see in [2.7.13] that macros are "parts of templates" ... would it be
possible to add that macros can define templates themselves:

<xsl:define-macro name="list-item-label">
    <xsl:choose>
        <xsl:when test='ancestor(list[attribute(type)="OL"]
                                /list[attribute(type)="OL"]'>
            <xsl:number format="a"/>
        </xsl:when>
        <xsl:when test='ancestor(list[attribute(type)="OL"]'>
            <xsl:number format="i"/>
        </xsl:when>
        <xsl:otherwise>
            <xsl:number format="1"/>
        </xsl:otherwise>
    </xsl:choose>
</xsl:define-macro>    

<xsl:define-macro name="list-templates">
   <xsl:template match='list[attribute(type)="{arg(type)}"]
                        /li[first-of-type()]'>
     <fo:list-item space-before="10pt" 
                   indent-start="{constant(indent-step)}">
        <xsl:contents/>
        <xsl:process-children/>     <!-- contents of the list item -->
     </fo:list-item>
   </xsl:template>
</xsl:define-macro>

<xsl:invoke name="list-templates">
    <xsl:arg name="type" value="OL"/>
    <fo:list-item-label>
        <fo:invoke macro="list-item-label"/>
    </fo:list-item-label>
</xsl:invoke>

<xsl:invoke name="list-templates">
    <xsl:arg name="type" value="UL"/>
    <fo:list-item-label>
        <xsl:text>&#x00B7;</xsl:text>
    </fo:list-item-label>
</xsl:invoke>

The above allows me to maintain a single definition of the fo:list-item
attributes across the different list item types of an Ordered List ("OL")
and an UnorderedList ("UL").

........... Ken


--
G. Ken Holman               mailto:gkholman@CanadaMail.com
Crane Softwrights Ltd.  http://www.CraneSoftwrights.com/s/
Box 266,                                V: +1(613)489-0999
Kars, Ontario CANADA K0A-2E0            F: +1(613)489-0995
Training:   http://www.CraneSoftwrights.com/s/schedule.htm
Resources: http://www.CraneSoftwrights.com/s/resources.htm
Shareware: http://www.CraneSoftwrights.com/s/shareware.htm
Received on Saturday, 12 September 1998 08:51:19 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:59:49 GMT