Subject: RE: [xsl] xsl:copy, mode and source code From: "Michael Kay" <mhk@xxxxxxxxx> Date: Fri, 27 Aug 2004 19:11:54 +0100 |
Are you using xsl:output method="text"? If you are, you will have to generate any XML tags you want in the output "by hand". Michael Kay > -----Original Message----- > From: Dave Jarvis [mailto:djarvis@xxxxxxxxxxxxxxxx] > Sent: 27 August 2004 18:06 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] xsl:copy, mode and source code > > Hello, > > I must simplify Java/C source code into a high-level XML > representation > (which is transformed into source code). I've hit a snag and would > really appreciate some help. > > Consider the following XML, within the "axe" namespace: > > <axe:message type="response"> > <pingResult><axe:value-of select="pingOutput" /></pingResult> > </axe:message> > > The "axe:message" content can contain XML code or text: > > <axe:message type="response"> > <nesting level="1"> > <pingResult><axe:value-of select="pingOutput" /></pingResult> > </nesting> > </axe:message> > > The relevant XSL templates include: > > <xsl:template match="axe:message[@type='response']"> > AGENT_m.append( <xsl:apply-templates mode="response" /> ); > </xsl:template> > > <xsl:template match="@*|node()" mode="response"> > X<xsl:copy><xsl:apply-templates select="@*|node()" /></xsl:copy> > </xsl:template> > > <xsl:template match="*" mode="response"> > Y<xsl:apply-templates /> > </xsl:template> > > <!-- Used by "axe:var", but may be applicable here ... --> > <xsl:template match="*|text()"> > "<xsl:copy-of select="." />" > <xsl:if test="position() != last()">+</xsl:if> > </xsl:template> > > The result from debugging the template: > > AGENT_m.append( > X > X > Y > AGENT_pingOutput ); > > The desired result: > > AGENT_m.append( > "<pingResult>" + > AGENT_pingOutput + > "</pingResult>" ); > > I could try an ugly hack: > > <xsl:template match="@*|node()"> > "<<xsl:value-of select="name()" />>"+ > <xsl:apply-templates /> + > "</<xsl:value-of select="name()" />>" > </xsl:template> > > I've also tried xsl:copy-of (for a deep copy), and > xsl:for-each over all > elements, but no matter what I do, I just can't seem to make > <pingResult> appear (much less in quotes with concatentation). I've > read numerous FAQs, a few mailing lists, and searched Google. > After two > days of wrestling, I'm stumped; everything I've read leads me > to believe > that <pingResult> should appear -- but it doesn't! > > Is there an elegant solution? > > Many thanks for any ideas, or smacks along the upside of my head. > > Sincerely, > Dave Jarvis > > P.S. > I'm using libxslt from http://xmlsoft.org/XSLT/.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] xsl:copy, mode and source cod, Dave Jarvis | Thread | [xsl] Generating an HTML with a nav, Shlomi Fish |
[xsl] Generating an HTML with a nav, Shlomi Fish | Date | Re: [xsl] Generating an HTML with a, cking |
Month |