|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Tree Fragment versus Node Set
Nope. Here is what I belive the problem to be.
My template call is using an Extension Function to return a snippet of
XML.
Is this causing the processor to get confused about what data type is
returned?
Do I need to convert the String representation of the XML to a NodeSet
(not
sure how this is done).
Here's a better, more complete, example of what I'm trying to do . . .
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0"
xmlns:xalan="http://xml.apache.org/xalan"
xmlns:vocabUtil="gov.cdc.pdp.vocabulary.VocabUtility"
exclude-result-prefixes="xalan">
<xsl:template match="/">
<out>
<xsl:variable name="var1">
<docelem>
<elem1>
<elem1a>ELEMENT1A</elem1a>
<elem1b>,ELEMENT1B</elem1b>
</elem1>
<elem2>
<elem2a>ELEMENT2A</elem2a>
</elem2>
</docelem>
</xsl:variable>
<xsl:variable name="var2">
<xsl:call-template name="myTemplateCall">
<xsl:with-param name="arg1" select="'arg1value'"/>
</xsl:call-template>
</xsl:variable>
<!-- OUT HERE IS WHAT IS EXPECTED -->
<xsl:for-each select="xalan:nodeset($var1)/docelem//*">
<xsl:value-of select="name(.)"/>
<xsl:text>,</xsl:text>
</xsl:for-each>
<!-- OUTPUT HERE DOES NOT HAPPEN .... UGHHHH -->
<xsl:comment><xsl:value-of select="$var2"/></xsl:comment>
<xsl:for-each select="xalan:nodeset($var2)/vvResult//*">
<xsl:value-of select="name(.)"/>
<xsl:text>,</xsl:text>
</xsl:for-each>
</out>
</xsl:template>
<xsl:template name="myTemplateCall">
<xsl:param name="arg1"/>
<xsl:value-of select="vocabUtil:validateCode($arg1)"/>
<!-- This extension function returns this XML snippet -->
<!-- <vvResult> -->
<!-- <element1>some value</element1> -->
<!-- <element2>some value</element2> -->
<!-- </vvResult> -->
</xsl:template>
</xsl:stylesheet>
-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
Sent: Thursday, September 15, 2005 2:14 PM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: Tree Fragment versus Node Set
Perhaps your elements are actually namespaced? Just a thought.
Try <xsl:message><xsl:copy-of select="$myVar"/></xsl:message>
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Kevin L. Cobb [mailto:kevin.cobb@xxxxxxxxxxxx]
> Sent: 15 September 2005 17:43
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: Tree Fragment versus Node Set
>
> Now I have a problem getting values out of my node-set which was
> converted from the tree fragment.
>
> <xsl:variable name="myVar">
> <xsl:call-template name="buildMyVariableNode">
> <xsl:with-param name="arg1" select="'test1'"/>
> <xsl:with-param name="arg2" select="'test2'"/>
> </xsl:call-template>
> </xsl:variable>
>
> <xsl:value-of
> select="xalan:nodeset($myVar)/result/firstElement/text()"/>
>
> I get nothing back for the value-of tag. My XML snippet that is the
> nodeset would look something like this:
>
> <result>
> <firstElement>some value</firstElement>
> <secondtElement>some value</secondElement>
> </result>
>
> I've tried variations on the XPATH expression but nothing is working.
> This simply
> ouput of the nodeset works as expected.
>
> <xsl:value-of select="$myVar"/>
>
> And also ...
>
> <xsl:value-of select="xalan:nodeset($myVar)"/>
>
> I know I must be missing something simple but I can't seem to see if
> for the trees.
>
> -Kevin
>
> -----Original Message-----
> From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
> Sent: Thursday, September 15, 2005 12:15 PM
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: Tree Fragment versus Node Set
>
> > is there a
> > better way to do this?
>
> No, in 1.0 there isn't. You sometimes need to create result tree
> fragments.
> But don't do it when you don't need to.
>
> Michael Kay
> http://www.saxonica.com/
>
> > -----Original Message-----
> > From: Kevin L. Cobb [mailto:kevin.cobb@xxxxxxxxxxxx]
> > Sent: 15 September 2005 15:33
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject: Tree Fragment versus Node Set
> >
> > I realize that its always better to form my variables into
> node-sets
> > versus tree fragments by using the select attribute
> whenever possible.
> > But, can one ALWAYS prevent (in XSLT 1.0) making a tree
> fragment? For
> > example, if building my variable comes from a template
> call, is there
> > a better way to do this?
> >
> > <xsl:variable name="myVar">
> > <xsl:call-template name="buildMyVariableNode">
> > <xsl:with-param name="arg1" select="'test1'"/>
> > <xsl:with-param name="arg2" select="'test2'"/>
> > </xsl:call-template>
> > </xsl:variable>
> >
> > -Thanks,
> >
> > Kevin
|
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
|

Cart








