This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Problems creating a node-set from Java method


Karen,

The xt:node-set function converts a result tree fragment into a nodeset
while you tell us that your Java function returns a string....

If (as I'd guess) this string contains tagged contain, you cannot
convert it into a nodeset...

Instead, your function should return a "ResultTreeFragment" meaning that
it should implement the XT ResultTreeFragment interface.

This interface is quite easy to implement (it's a SAX parser...) and I
have written some documentation about it on 4xt:

http://4xt.org/docs/000421-0001.xml

Hope this helps.

Eric

"Super, Karen" wrote:
> 
> I am having problems creating a node-set from my external function.  I am
> trying to retrieve some XML data, call a template within my stylesheet to
> format the returned data, and then continue parsing the XML document.  I am
> getting an XSL exception of "cannot convert to node-set".  I am basically
> trying to import an XML document into the current document.  My Java
> function getFamilyTree() returns a String.  Here is a little more
> information:
> 
> I am using XT.  My stylesheet looks like:
> 
> <?xml version='1.0'?>
> <xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
>         xmlns:xt='http://www.jclark.com/xt'
>         xmlns:ft='http://www.jclark.com/xt/java/com.wg.Myjava' >
> <xsl:output method='xml' indent='yes'/>
> <xsl:template match='/'>
>         <PublicRec><xsl:apply-templates'/>
>         </PublicRec>
> </xsl:template>
> <xsl:template match='record'>
>         ...
>         <xsl:call-template name='FamilyTree'/>
>         ...
> </xsl:template>
> <xsl:template name='FamilyTree'>
>         <xsl:variable name='toc' select='ft:getFamilyTree()'/>
>         <xsl:call-template name='Tree'>
>                 <xsl:param name='data'><xsl:value-of
> select='xt:node-set($toc)'/></xsl:param>
>         </xsl:call-template>
>         ...
> </xsl:template>
> <xsl:template name='Tree'>
>         <xsl:param name='data'/>
>         <Content><xsl:value-of select='$data/document/title'/>
>         <Head><xsl:value-of
> select='$data/document/branch_headquarters@count'/> headquarters</Head>
>         <Branch><xsl:value-of
> select='$data/document/branch_locations@count'/> branches</Branch>
>         ...
>         </Content>
> </xsl:template>
> ...
> 
> </xsl:stylesheet>
> 
> My XML document looks like:
> 
> <record>
> <citation>001-01-0032</citation>
> <CorpHier/>
> <city>CONCORD</city>
> <state>NH</state>
> <zip.code>03301</zip.code>
> </record>
> 
> The XML that the getFamilyTree() method is returning looks like:
> <?xml version="1.0"?>
> 
> <document>
>   <title>Corporate Family Hierarchy</title>
>   <branches_headquarters count="1" />
>   <direct_company_relationships count="2" />
>   <all_company_relationships count="0" />
>   <branch_locations count="0" />
> </document>
> 
> Anyone have any ideas as to why my string is not being converted into a
> node-set?  Any suggestions/comments as to how I might get this to work are
> very appreciated.
> 
> Thanks,
> Karen
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

-- 
------------------------------------------------------------------------
Eric van der Vlist       Dyomedea                    http://dyomedea.com
http://xmlfr.org         http://4xt.org              http://ducotede.com
------------------------------------------------------------------------


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]