Sean, I got Allaire's example working. I found these problems based on the
version I copied from the Allaire website:
1. If you copy the example XSL file from the website, the <xsl:stylesheet>
tag's xmlns:xsl attribute value is broken into 2 lines, causing the xsl
processor to fail completely. Instead of doing the transformation, it was
just outputting the content of the original xsl file. The namespace needs
to be in a continuous line, as follows:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
2. The printWriter class wasn't being closed, so the file containing the
wddx was never being flushed to disk. I added the following to the end of
the code:
<cfset printWriter.close()>
3. The resulting processed file wasn't being read into a CF variable, so I
added:
<cffile action="read"
file="[path]wddx_test.wddx"
variable="wddx">
4. Next, when I tried to run <cfwddx> to transform the wddx to a structure,
I got:
Error Diagnostic Information
unknown exception condition
TagCFWddx::execute
There was an error in the XSL file: the "item" element was being mapped to a
named structure; since it was a structure within an array, it couldn't take
a name, causing the WDDX parser to fail. I corrected the XSL file, and
everything now works. Here's my corrected XSL file:
************************
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Match invoice root & emit WDDX packet wrapper -->
<xsl:template match="/invoice">
<wddxPacket version="1.0">
<header/>
<data>
<struct>
<xsl:apply-templates/>
</struct>
</data>
</wddxPacket>
</xsl:template>
<!-- Process all elements that map to array variables -->
<xsl:template match="billableHours">
<var name="{name(.)}">
<array length="{count(*)}">
<xsl:apply-templates/>
</array>
</var>
</xsl:template>
<!-- Process all elements that map to struct variables -->
<xsl:template match="invoice|contractorInfo|address">
<var name="{name(.)}">
<struct>
<xsl:apply-templates/>
</struct>
</var>
</xsl:template>
<!-- Process structures inside arrays (no names) -->
<xsl:template match="item">
<struct>
<xsl:apply-templates/>
</struct>
</xsl:template>
<!-- Process all elements that map to string variables -->
<xsl:template
match="firstName|lastName|street|city|state|zip|country|voice|fax|email|
description|currency">
<var name="{name(.)}">
<string>
<xsl:value-of select="text()"/>
</string>
</var>
</xsl:template>
<!-- Process all elements that map to number variables -->
<xsl:template match="invoiceID|employeeID|hours|amount">
<var name="{name(.)}">
<number>
<xsl:value-of select="text()"/>
</number>
</var>
</xsl:template>
<!-- Process all elements that map to date-time variables -->
<xsl:template match="dateSubmitted|date">
<var name="{name(.)}">
<string>
<xsl:value-of select="text()"/>
</string>
</var>
</xsl:template>
</xsl:stylesheet>
************************
I'll pass this info to the folks at Allaire.
--David
> -----Original Message-----
> From: Sean Renet [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, May 23, 2000 5:53 PM
> To: [EMAIL PROTECTED]
> Subject: Re: XML Question
>
>
> yes, you would think someone would have tested the knowledge base article.
> I though it necessary to point this out as you directed someone that asked
> how to parse an XML file into CFML to your article which
> references this doc
> as the means to do such.
> ----- Original Message -----
> From: "David Gassner" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Tuesday, May 23, 2000 11:27 AM
> Subject: RE: XML Question
>
>
> > Interesting; I never actually tested Allaire's approach, but
> included the
> > reference in my article for the sake of completeness. My
> article focuses
> on
> > parsing xml file's document object model, rather than
> translation with xls
> > (which the knowledgebase article deals with).
> >
> > Side note: I've been playing with IBM's java-based xerces processor from
> > <cfobject> and have been having some good results.
> >
> > David
> >
> > > -----Original Message-----
> > > From: Sean Renet [mailto:[EMAIL PROTECTED]]
> > > Sent: Tuesday, May 23, 2000 11:09 AM
> > > To: [EMAIL PROTECTED]
> > > Subject: Re: XML Question
> > >
> > >
> > > David,
> > > The "Tech Note" you are refering to "
> > > www.allaire.com/handlers/index.cfm?ID=14244&Method=Full#1020244 "
> > > does not
> > > work. I have an open incident with Allaire, wherein they are
> trying to
> > > figure out why. Evidently after they fix the problem they
> are going to
> > > update the knowledge base article.
> > > ----- Original Message -----
> > > From: "David Gassner" <[EMAIL PROTECTED]>
> > > To: <[EMAIL PROTECTED]>
> > > Sent: Tuesday, May 23, 2000 7:29 AM
> > > Subject: RE: XML Question
> > >
> > >
> > > > Bob, I wrote an article on using the MS XMLDOM COM object with
> > > CF to parse
> > > > conventional XML files; it's at:
> > > >
> > > > http://www.sys-con.com/xml/archives/0102/gassner/index.html
> > > >
> > > > Take a look and email me off-list if you need any clarification.
> > > >
> > > > David
> > > >
> > > > > -----Original Message-----
> > > > > From: Robert Everland III [mailto:[EMAIL PROTECTED]]
> > > > > Sent: Monday, May 22, 2000 7:22 PM
> > > > > To: [EMAIL PROTECTED]
> > > > > Subject: XML Question
> > > > >
> > > > >
> > > > > Ok I get the gist on how to use WDDX, but how would I
> read in an XML
> > > > > document? Same prinipal, 3rd party utility?
> > > > >
> > > > >
> > > > > Bob Everland
> > > > >
> > > > > ------------------------------------------------------------------
> > > > > ------------
> > > > > Archives: http://www.eGroups.com/list/cf-talk
> > > > > To Unsubscribe visit
> > > > > http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/cf
> > > > _talk or send a message to [EMAIL PROTECTED] with
> > > > 'unsubscribe' in the body.
> > > >
> > > >
> >
> >
> --------------------------------------------------------------------------
> > > ----
> > > > Archives: http://www.eGroups.com/list/cf-talk
> > > > To Unsubscribe visit
> > >
http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/cf_talk
or
> > send a message to [EMAIL PROTECTED] with 'unsubscribe'
in
> > the body.
> > >
> >
> > ------------------------------------------------------------------
> > ------------
> > Archives: http://www.eGroups.com/list/cf-talk
> > To Unsubscribe visit
> http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/cf_talk or
> send a message to [EMAIL PROTECTED] with 'unsubscribe' in
> the body.
>
> --------------------------------------------------------------------------
----
> Archives: http://www.eGroups.com/list/cf-talk
> To Unsubscribe visit
http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/cf_talk or
send a message to [EMAIL PROTECTED] with 'unsubscribe' in
the body.
>
----------------------------------------------------------------------------
--
Archives: http://www.eGroups.com/list/cf-talk
To Unsubscribe visit
http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/cf_talk or
send a message to [EMAIL PROTECTED] with 'unsubscribe' in
the body.
------------------------------------------------------------------------------
Archives: http://www.eGroups.com/list/cf-talk
To Unsubscribe visit
http://www.houseoffusion.com/index.cfm?sidebar=lists&body=lists/cf_talk or send a
message to [EMAIL PROTECTED] with 'unsubscribe' in the body.