[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

R: [text nodes] Unmatching text nodes wrongly i

Subject: R: [text nodes] Unmatching text nodes wrongly inserted
From: Chizzolini Stefano <chist@xxxxxx>
Date: Thu, 23 Sep 2004 18:29:08 +0200
empty template declaration
OK, that's fine:

> <xsl:template match="xdm:field"/> <!-- this is the empty template -->

But how can I extend this concept to exclude not just the unwanted <field>
elements, but ANY element OTHER THAN those I need to render?
For the purpose, I thought a declaration like the following:

<xsl:template match="node()"/>

that should (in my hope!) exclude any rendering for all the non-root
elements, at the same time (due to the template priority algorithm (XSLT 1.0
Specification, ' 5.5, http://www.w3.org/TR/xslt#conflict)) allowing the
correct render of the wanted elements:

<?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="node()"/> <!-- empty template for all the non-root
nodes -->
<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>

sadly, this syntax doesn't work at all: it seems to keep the highest
priority to the empty template, ignoring any else (the result is an empty
xml).

You know: I haven't grasped the intricacies of XSLT semantics yet!

Thanks for your help.

Stefano

> -----Messaggio originale-----
> Da:	Francesco Barresi [SMTP:kywocs@xxxxxxxxx]
> Inviato:	mercoledl 22 settembre 2004 18.28
> A:	xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Oggetto:	Re:  [text nodes] Unmatching text nodes wrongly
> inserted
>
> 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 !!

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.