Subject: Re: [xsl] Using for-each w/ page-sequence results in "NC105 ID already exists in this document" error From: Tony Graham <Tony.Graham@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 20 Sep 2007 16:48:05 +0100 |
On Thu, Sep 20 2007 14:56:29 +0100, Sharon_Harris@xxxxxxxxxxxxxxxxxxxx wrote: > Before trying the for-each, I had all the page sequences contained within a > template. I had 6 page sequences within that template that applied to 5 > different elements (cover, disclaimer, toc, introduction, lessons, > evaluation). There are multiple instances of the Lesson element but the > Lesson page sequence did not start over for each instance, which is why I > tried using a for-each. I had the page sequences contained within the > following template. > <xsl:template match="/"> > <fo:root> > cover page sequence 1 > disclaimer page sequence 2 > toc page sequence 3 > introduction page sequence 4 > lessons page sequence 5 (contains <apply-templates > select="//Lesson" mode="Activity"/ in the Body flow> > evaluation page sequence 6 > </fo:root> > </xsl:template> > > Here is the code I used for the page sequences without the for-each. > <xsl:template match="/"> > <fo:root> ... > <!--Start Lesson Section--> > <fo:page-sequence master-reference=" > Chapter-SequenceOddEven"> ... > </fo:page-sequence> > <!--End Lesson Section--> ... > </fo:root> > </xsl:template> > <!--End Evalution Section--> 1. Do any of your attribute sets include ID attributes? 2. Are lessons recursive, such that one lesson may contain another, so that the contained lesson is processed twice when you select "//Lesson"? 3. The advice from others for you to examine your output has been for you to run your input and stylesheet using an XSLT (not XSL-FO) processor -- e.g., xsltproc or Saxon -- and look at the XML output that it produces since that will include "id" attributes for the duplicated ID. 4. Instead of <xsl:for-each select="//Lesson">, you could do <xsl:apply-templates select="Lesson"> (i.e., something more specific than "//Lesson" because "//Lesson" looks for <Lesson> elements *everywhere*, including in the descendants of <Lesson>) and have a separate template for <Lesson>, e.g.: <xsl:template match="Lesson"> <!--Start Lesson Section--> <fo:page-sequence master-reference="Chapter-SequenceOddEven"> ... </fo:page-sequence> <!--End Lesson Section--> </xsl:template> That probably won't solve your duplicate ID problem since it's still likely that something is being processed twice, but it makes your "/" template a bit less monolithic. Regards, Tony Graham. ====================================================================== Tony.Graham@xxxxxxxxxxxxxxxxxxxxxx http://www.menteithconsulting.com Menteith Consulting Ltd Registered in Ireland - No. 428599 Registered Office: 13 Kelly's Bay Beach, Skerries, Co. Dublin, Ireland ---------------------------------------------------------------------- Menteith Consulting -- Understanding how markup works ======================================================================
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Using for-each w/ page-se, Wendell Piez | Thread | [xsl] variable outside a for-each l, Mathieu Malaterre |
Re: [xsl] variable outside a for-ea, Mathieu Malaterre | Date | Re: [xsl] Using for-each w/ page-se, Wendell Piez |
Month |