[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: number + document

Subject: RE: number + document
From: Americo Albuquerque <melinor@xxxxxxx>
Date: Fri, 20 Jun 2003 14:29:01 +0100
xsl nuber format
Hi

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of abbouh
> Sent: Wednesday, June 18, 2003 7:42 PM
> To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx
> Subject:  number + document
> 
> 
> i want to use nuber for each "ht" node in several document
> so i use this xsl file:
> <xsl:for-each select="//doccontent/chapmod">
> <xsl:for-each 
> select="document(concat(string(./attribute::docref),'.xml'))//ht">
> <xsl:choose>
> ....
> <xsl:number level="multiple"  count="chap1|chap2|chap3" 
> format="A.1"/> .. <xsl:value-of select="."/> .. 
> </xsl:for-each> </xsl:for-each>
> 
> and receive this output:
> 
> A title1
> A title2
>     A.1 paragraph1
>       A.1.1 ss-paragraph1
>       A.1.2 ss-paragraph2
>       A.1.3 ss-paragraph3
>     A.2 paragraph2
> A title3
> 

That's because xsl:number sees each chap diferently because they have
diferent parents.
> 
> but what i want to get is:
> 
> A title1
> B title2
>     B.1 paragraph1
>       B.1.1 ss-paragraph1
>       B.1.2 ss-paragraph2
>       B.1.3 ss-paragraph3
>     B.2 paragraph2
> C title3
> 
Try this:

<xsl:stylesheet exclude-result-prefixes="ms" version="1.0"
xmlns:ms="urn:schemas-microsoft-com:xslt"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="doccontent">
        <!-- create ntf with all chapters -->
        <xsl:variable name="docs">
            <xsl:for-each select="chapmod">
                <xsl:for-each select="document(concat(@docref,'.xml'))">
                    <xsl:copy-of select="/doccontent/docbody/*"/>
                </xsl:for-each>
            </xsl:for-each>
        </xsl:variable>
        <!-- all chapters now have the same parent so the xsl:number should
work now -->
        <xsl:apply-templates select="ms:node-set($docs)" mode="chapters"/>
    </xsl:template>
    <xsl:template match="/" mode="chapters">
        <xsl:apply-templates mode="chapters"/>
    </xsl:template>
    <xsl:template match="chap1 | chap2 | chap3" mode="chapters">
        <xsl:number count="chap1 | chap2 | chap3" format="A.1"
level="multiple"/>
        <xsl:text>&#160;</xsl:text>
        <xsl:apply-templates select="ht"/>
        <xsl:text>&#10;</xsl:text>
        <xsl:apply-templates mode="chapters" select="*[not(self::ht)]"/>
    </xsl:template>
</xsl:stylesheet>

If you use another processor you'll have to change the ms namespace
accordingly. It's need is to use the node-set function, so you can use any
one you want that has a similar function (xalan, saxon, etc)

Hope this helps



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread
  • number + document
    • abbouh - Wed, 18 Jun 2003 14:31:06 -0400 (EDT)
      • abbouh - Thu, 19 Jun 2003 05:14:29 -0400 (EDT)
      • Americo Albuquerque - Fri, 20 Jun 2003 09:31:18 -0400 (EDT) <=

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.