[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Parsing mixed content nodes

Subject: RE: Parsing mixed content nodes
From: "Jason Macki" <jmacki@xxxxxxx>
Date: Fri, 8 Feb 2002 15:32:19 -0600
xsl mixed content
The main thing was to extract the links from the a elements, and to
insert a new line where the br tag was.

I solved the problem this way:

<xsl:template name="textconvert">

<xsl:for-each select="node()">
	<xsl:choose>
		<xsl:when test="count(child::*) &gt; 0">
<xsl:call-template name="textconvert" />
		</xsl:when>
		<xsl:when test="local-name(.)='br'">
<xsl:text>
</xsl:text>
		</xsl:when>
		<xsl:when test="local-name(.)='a'">
<xsl:value-of select="." /> (<xsl:value-of select="@href" />)

		</xsl:when>
		<xsl:when test="local-name(.)=''">
<xsl:value-of select="." />
		</xsl:when>
		<xsl:otherwise>
		</xsl:otherwise>
	</xsl:choose>
</xsl:for-each>

</xsl:template>

The main problem was figuring out how to break up the pieces of a mixed
content node, and that can be done by doing a for-each select with the
node() function.  It handles each type of tag by testing the local-name.

- Jason

-----Original Message-----
From: Thomas B. Passin [mailto:tpassin@xxxxxxxxxxxx] 
Sent: Friday, February 08, 2002 3:06 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re:  Parsing mixed content nodes


The big question is, do you want to handle any arbitrary mixed content,
or just <a> elements like this?  If any, exactly what should be shown
for other elements, especially if they have more than one attribute?

Tom P

[Jason Macki]

I'm writing a stylesheet that converts some HTML code into text.

For example, this xml:

<item>
<p>
    This is a <a href="link.htm">link</a><br />This is a new line. </p>
<item>

would be translated into this text:

This is a link(link.htm)
This is a new line.

I can use the descendant axis to retrieve the "p" node, the "a" node,
and the "br" node from the "item" element.

My problem is combining them back together, in the correct order.

I'd like to be able to write XSLT that would output:

"this is a", then the "a" node, then a line break for the "br" node, and
then output the remaining text.

Does anyone have any ideas?



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


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


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.