Subject: Re: [text nodes] Unmatching text nodes wrongly inserted
From: Francesco Barresi <kywocs@xxxxxxxxx>
Date: Wed, 22 Sep 2004 12:28:11 -0400
|
Hi Stefano,
The 'extra' text inserted:
1
2003-12-18
Is because you used <xsl:apply-templates/> in the "xdm:fields"
template, so the processor process all his childs, this is:
<field name="CSBFT242">FATTURA DI VENDITA</field>
<field name="CSBFT009">1</field>
<field name="CSBFT010">2003-12-18</field>
For the first "xdm:field" there is no problem because you defined a
template for that, but for the other 2 child you didn't defined any
template, then the processor apply his default template, wich in most
cases the built-in template is to output the text contained in an
element.
You could "delete" the default template simply defining an empty a
template for the <xdm:field> elements, and the template matching
"xdm:field[@name='CSBFT242']" will still work.
Something like this:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0" xmlns:xdm="http://www.aaa.it/consulta/xdmModel">
<xsl:template match="xdm:fields">
<map font-family="Courier" font-size="10pt" height="1" x-unit="in/10"
y-unit="in/6">
<xsl:apply-templates/>
</map>
</xsl:template>
<xsl:template match="xdm:field"/> <!-- this is the empty template -->
<xsl:template match="xdm:field[@name='CSBFT242']">
<label x="20" y="56" width="12">
<xsl:value-of select="."/>
</label>
</xsl:template>
</xsl:stylesheet>
Bye.
Francesco.
PD:Scusa il mio inglese, fa abbastanza pena :)
On Wed, 22 Sep 2004 18:15:16 +0200, Chizzolini Stefano <chist@xxxxxx> wrote:
> Hi all,
>
> I tried to render this xml:
>
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <documents xmlns="http://www.aaa.it/consulta/xdmModel">
> <document id="2003722011924">
> <header>
> <caption>Fattura 1924/2003 di AAAAAA SpA</caption>
> </header>
> <body format="pdf" base="fatture/">
> <pages>
> <page template="FTNORM.pdf">
> <fields>
> <field name="CSBFT242">FATTURA DI VENDITA</field>
> <field name="CSBFT009">1</field>
> <field name="CSBFT010">2003-12-18</field>
> </fields>
> </page>
> </pages>
> </body>
> </document>
> </documents>
>
> transforming it with this ridiculous XSLT stylesheet:
>
> <?xml version="1.0" encoding="utf-8"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="1.0" xmlns:xdm="http://www.aaa.it/consulta/xdmModel">
> <xsl:template match="xdm:fields">
> <map font-family="Courier" font-size="10pt" height="1" x-unit="in/10"
> y-unit="in/6">
> <xsl:apply-templates/>
> </map>
> </xsl:template>
> <xsl:template match="xdm:field[@name='CSBFT242']">
> <label x="20" y="56" width="12">
> <xsl:value-of select="."/>
> </label>
> </xsl:template>
> </xsl:stylesheet>
>
> but the result was quite horrific:
>
> <?xml version="1.0"?>
> Fattura 1924/2003 di AAAAAA SpA
> <map font-family="Courier" font-size="10pt" height="1" x-unit="in/10"
> y-unit="in/6" xmlns:xdm="http://www.aaa.it/consulta/xdmModel">
> <label x="20" y="56" width="12">FATTURA DI VENDITA</label>
> 1
> 2003-12-18
> </map>
>
> As you can see, the core transformation is right, but the XSLT processor
> inserted also all the unwanted text node values!
> I checked all the above code, but I'm really puzzled.
>
> What's wrong in my stylesheet?
>
> Many thanks
>
> Stefano
>
>
--
www.GetFirefox.com !!
|