|
Subject: RE: Converting XML <link> to HTML anchor From: Mike Brown <mbrown@xxxxxxxxxxxxx> Date: Wed, 8 Dec 1999 20:19:15 -0700 |
Michael Teigman wrote:
> I have an xml like this:
>
> <text>
> <p>Text1</p>
> <p>Text2 <link href="link1">label1</link></p>
> <p><link href="link2">label2</link></p>
> <p>Text3 <link href="link3">label3</link> text4 <link
> href="link4">label4</link> text 5</p>
> </text>
>
> For example I want from the above:
>
> <p>
> <p>Text1</p>
> <p>Text2 <a href="link1">label1</a></p>
> <p><a href="link2">label2</a></p>
> <p>Text3 <a href="link3">label3</a> text4 <a
> href="link4">label4</a> text 5</p>
> </p>
Well, your nesting of <p>'s within <p>'s is invalid HTML, so I'll take the
liberty of changing the enclosing one to a <div>. These 3 templates should
handle any arbitrary nesting of text, p, and link elements in the source
tree.
<xsl:template match="text">
<div>
<xsl:apply-templates/>
</div>
</xsl:template>
<xsl:template match="p">
<p>
<xsl:apply-templates/>
</p>
</xsl:template>
<xsl:template match="link">
<a href="{@href}">
<xsl:apply-templates/>
</a>
</xsl:template>
To help understand why they work, remember there are built-in templates:
<xsl:template match="*|/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="text()|@*">
<xsl:value-of select="."/>
</xsl:template>
And know that <xsl:apply-templates/>, if no select attribute is given, will
find the templates that best match each child of the current node, and will
invoke them one by one.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Converting XML <link> to HTML ancho, Michael Teigman | Thread | Re: Converting XML <link> to HTML a, Brett McLaughlin |
| RE: Escaping within an xsl:attribut, Mike Brown | Date | delete me, John . Cyriac |
| Month |