Subject: RE: [xsl] number + document From: Americo Albuquerque <melinor@xxxxxxx> Date: Fri, 20 Jun 2003 14:29:01 +0100 |
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: [xsl] 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> </xsl:text> <xsl:apply-templates select="ht"/> <xsl:text> </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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] number + document, Lars Huttar | Thread | [xsl] Border around image in FOP?, Mike K. |
RE: [xsl] doctype declaration and m, Nancy Pate | Date | [xsl] about & ..., Fei Zheng |
Month |