xsl-list
[Top] [All Lists]

Re: In-order traversal of XHTML of text() and <foo> nodes?

2003-03-28 09:13:30
Hi Gan,

Say I have XML like this...

<foobar>
   Once <foo>upon</foo> a midnight <bar>dreary</bar> while I...
</foobar>

How do I make a traversal of that <foobar> node, picking up text(),
<foo> and <bar> in document order, so as to pass through the text()
but apply separate templates to <foo> and <bar>?

XSLT is designed to make this kind of transformation easy. Use the
<xsl:apply-templates> instruction to say "process the children of this
node" and the <xsl:template> element to say "when you find an element
X do Y":

<xsl:template match="foobar">
  <p><xsl:apply-templates /></p>
</xsl:template>

<xsl:template match="foo">
  <b><xsl:apply-templates /></b>
</xsl:template>

<xsl:template match="bar">
  <i><xsl:apply-templates /></i>
</xsl:template>

In this example, the text nodes are processed by a built-in template
that looks like:

<xsl:template match="text()">
  <xsl:value-of select="." />
</xsl:template>

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


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



<Prev in Thread] Current Thread [Next in Thread>