XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
cameron chrismanSubject: quick and simple newbie question on template application
Author: cameron chrisman
Date: 08 Jan 2007 02:48 PM
Ok, so this should be a pretty quick "whether XSLT can do this or not", it seems like it really should be able to, but I can't find any examples of it:

I have a stylesheet that looks like this:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

<xsl:template match="foo">
<b> foo's bold text </b>
</xsl:template>

<xsl:template match="b">
<i> <xsl:value-of select="."/> </i>
</xsl:template>

</xsl:stylesheet>


My input is this:

<foo/>
<b> bold text outside of foo </b>

My output is this:
<?xml version="1.0"?>
<b> foo's bold text </b>
<i> bold text outside of foo </i>

My desired output is this:
<?xml version="1.0"?>
<i> foo's bold text </i>
<i> bold text outside of foo </i>


Essentially what I want is for my rule for <b> tags to be applied in the definition of my rule for <foo> tags. I know I could do a second pass, but that seems like a hack. Is this possible to do in one pass? It seems like there should be some random trick to do this since it seems like a common operation.

Postnext
Minollo I.Subject: quick and simple newbie question on template application
Author: Minollo I.
Date: 08 Jan 2007 02:55 PM
Something like this?

<xsl:template match="foo">
<xsl:variable name="fooContent">
<b> foo's bold text </b>
</xsl:variable>
<xsl:apply-templates select="$fooContent"/>
</xsl:template>

<xsl:template match="b">
<i> <xsl:value-of select="."/> </i>
</xsl:template>

Postnext
cameron chrismanSubject: quick and simple newbie question on template application
Author: cameron chrisman
Date: 08 Jan 2007 03:31 PM
that gives me:

<?xml version="1.0"?>

<i> bold text outside of foo </i>


i.e. empty whitespace where the evaluation of the <foo> tag should be. If I'm reading this correctly, this variable is processed and then never used.

If I try adding <xsl:value-of select="$fooContent"/> to spit out the value of this variable after the apply-templates line, it seems to strip the tags:

<?xml version="1.0"?>
foo's bold text
<i> bold text outside of foo </i>


FYI I'm using command line xsltproc with libxslt v10111.

Postnext
Minollo I.Subject: quick and simple newbie question on template application
Author: Minollo I.
Date: 08 Jan 2007 03:34 PM
Cameron,
this discussion forum is for Stylus Studio users only (http://www.stylusstudio.com/download).

Anyway, using this as input XML document:
<?xml version="1.0"?>
<root>
<foo/>
<b> bold text outside of foo </b>
</root>

And this as XSLT:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="foo">
<xsl:variable name="fooContent">
<b> foo's bold text </b>
</xsl:variable>
<xsl:apply-templates select="$fooContent"/>
</xsl:template>
<xsl:template match="b">
<i> <xsl:value-of select="."/> </i>
</xsl:template>
</xsl:stylesheet>

I get this output:
<?xml version='1.0' ?>
<i> foo's bold text </i>
<i> bold text outside of foo </i>

Posttop
cameron chrismanSubject: quick and simple newbie question on template application
Author: cameron chrisman
Date: 08 Jan 2007 03:42 PM
oops, sorry, I thought general discussion of xsl issues was OK here as well :P

Your point is well taken, however, as the implementation of XSLT I'm using does not produce the same results.

Ciao

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.