Re: [xsl] Using for-each w/ page-sequence results in "NC105 ID already exists in this document" error
Subject: Re: [xsl] Using for-each w/ page-sequence results in "NC105 ID already exists in this document" error|
From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx>
Date: Thu, 20 Sep 2007 10:21:36 -0400
At 2007-09-20 09:56 -0400, Sharon_Harris@xxxxxxxxxxxxxxxxxxxx wrote:
Thank you so much for replying.
>Those should be ref-id= attributes and not id= attributes. Check
>your XSL-FO instance to make sure <page-number-citation> is using ref-id=.
Yes, I am using ref-id.
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
My quick observation finds the prevalent (and execution wasteful) use
of "//" throughout your stylesheet. I suspect you may misunderstand
the application and utility of this construct. It is the number one
reason why many stylesheets execute slowly, and in this case, the
repetition inferred by "//" is likely causing the duplicate identifiers.
In another message you comment that you cannot see the generated
XSL-FO. You can always inspect your generated XSL-FO by running your
XML with your XSLT outside of the XSL-FO processor as a standalone
Looking over the supplied code, I really cannot tell quickly where
things are going wrong.
I suggest again that you generate your XSL-FO standalone and inspect
the results and this should reveal all to you.
As for stylesheet writing techniques, there are limited use cases for
"//" and I tell my students to avoid using it unless they really wish
to traverse the *entire* source node tree looking for
constructs. This is rarely required. Many new users of XSLT think
that "//" is somehow a shortcut, but it is just plain inappropriate.
If I were to guess, I would suspect you are improperly using "//" to
generate multiple copies of XSL-FO constructs with identifiers. But
where that happens will not be known until you inspect the generated XSL-FO.
I hope this helps.
. . . . . . . . . . Ken
Upcoming public training: UBL and code lists Oct 1/5; Madrid Spain
World-wide corporate, govt. & user group XML, XSL and UBL training
RSS feeds: publicly-available developer resources and training
G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (F:-0995)
Male Cancer Awareness Jul'07 http://www.CraneSoftwrights.com/s/bc
Legal business disclaimers: http://www.CraneSoftwrights.com/legal