|
[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[Recent Entries]
[Reply To This Message]
Re: Selecting templates by root elements from input (s
Subject: Re: Selecting templates by root elements from input (sub-)docs
From: Joerg Heinicke <joerg.heinicke@xxxxxx>
Date: Tue, 06 Aug 2002 02:38:48 +0200
|
Hello Yves,
if you write
<xsl:apply-templates select="document($my_subdoc)/*"/>
a template is searched matching on the root element of the subdoc, which
should be <chapter/> or <section/>.
In these (both (?)) templates you need to declare the parameter:
<xsl:template match="chapter">
<xsl:param name="my_subdoc" select="'default value'"/>
<xsl:value-of select="$my_subdoc"/>
</xsl:template>
The <xsl:value-of/> should output the value of the param now. If not,
you must post a bit more out of your XSLT.
Regards,
Joerg
Yves Forkl wrote:
Hi,
I have several XML input documents each representing one chapter or
section (with a root element accordingly named "chapter" or "section")
of a bigger structure, so they sometimes happen to be a kind of
logical subdoc of the main input document that is currently processed.
In a rather complex stylesheet, I'm reading the content of each of
those subdoc files by using the document() function. My goal is to
process that content using a template specific to "chapter" or
"section".
As I mentionned in a previous posting with the subject "Parameter
evaluation after use of document()", I try to find the appropriate
template for the document by passing its whole content, in my
"subdoc_mode" mode specialized to that processing step. As I need the
subdoc's name when processing it, I am also passing that parameter (a
global parameter):
<xsl:apply-templates
select="document($my_subdoc)"
mode="subdoc_mode">
<!-- hand the param to the called template -->
<xsl:with-param name="my_subdoc"
select="$my_subdoc"/>
</xsl:apply-templates>
Unfortunately, my parameter gets lost - even after passing it
explicitly like this!
From Oleg Tkachenko's response to my posting I learnt that losing a
parameter may be related to selecting the document's root NODE instead
of its root ELEMENT - or any other element form the document -, as the
built-in template matching "/" would certainly lose it, so I added
that instruction. He also recommended:
Oleg> Try to add some location path after document() function to
eliminate
Oleg> built-in templates processing as they don't pass parameters.
I tried with appending "/*" to the document() instruction, but to no
avail. Of course it would be possible to explicitly select "/chapter"
or "/section", but I think I cannot do without a generic
"apply-templates" instruction like the one above - it would thus not
be possible to state the document's root element.
Do you have any suggestions? Maybe on the general topic of processing
subdocs?
Yves
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list

|
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format
| RSS 2.0 |
|
| Atom 0.3 |
|
|