Go Back   Velocity Reviews > Newsgroups > XML
User Name
Password
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply

XML - XSL Transform - Why is it writing out everything?

 
Thread Tools Search this Thread
Old 05-24-2006, 11:11 AM   #1
Default XSL Transform - Why is it writing out everything?


Hi

I have done the folloing XSLT and although it does write out my
elements as I want, it is also writing out ALL of the information in
the child nodes and attributes as it loops around.

Any ideas would be greatly appreciated - I am sure it is something
tiny!

Best regards and many thanks

Darren

<?xml version="1.0" encoding="iso-8859-1" ?>
<xsl:stylesheet version="1.0"
xmlnssl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns1="http://www.someurl.com/abc/2002/09"
>


<xsl:template
match="ns1:ABC_AccomAvailRS/ns1:AccommodationSearchResponse/ns1:Accommodations">

This is the start of our XSLT Transformation.<br />

<xsl:for-each select="ns1:AccommodationSegment">

<div name="dvHotelName"
style="background-color:#0033FF;padding:2px">
<xsl:value-of select="@AccommodationName"/> - <xsl:value-of
select="@OfficialRating"/>

</div>

<xsl:apply-templates />
<b>
<xsl:value-of select="ns1escription"/>
</b>

</xsl:for-each>


<br />End of the XSLT Transformation

</xsl:template>

<xsl:template match="ns1:Image[1]">
<img src="{@ThumbnailURL}" />
</xsl:template>


</xsl:stylesheet>



daz_oldham
  Reply With Quote
Old 05-24-2006, 11:47 AM   #2
daz_oldham
 
Posts: n/a
Default Re: XSL Transform - Why is it writing out everything?

I have been able to put in additional templates as such:

<xsl:template match="ns1:Address" >

</xsl:template>

But I think that rather than solving the problem, this just hides it
doesn't it?

Thanks

Darren

  Reply With Quote
Old 05-24-2006, 01:12 PM   #3
Joe Kesselman
 
Posts: n/a
Default Re: XSL Transform - Why is it writing out everything?

daz_oldham wrote:
> I have done the folloing XSLT and although it does write out my
> elements as I want, it is also writing out ALL of the information in
> the child nodes and attributes as it loops around.


"All the information in the child nodes" doesn't surprise me a lot.
You're doing an apply-templates recursion with no select, which defaults
to processing all the children, and the default template for elements
dumps the text content of the element. So add a select= attribute to the
apply to tell it which ones you actually want to examine, and/or provide
templates that treat those other elements the way you want them treated.

I can't explain "and attributes" in this case, but I suspect that's an
erroneous report rather than an actual behavior.

--
() ASCII Ribbon Campaign | Joe Kesselman
/\ Stamp out HTML e-mail! | System architexture and kinetic poetry
  Reply With Quote
Old 05-24-2006, 01:15 PM   #4
Martin Honnen
 
Posts: n/a
Default Re: XSL Transform - Why is it writing out everything?



daz_oldham wrote:


> I have done the folloing XSLT and although it does write out my
> elements as I want, it is also writing out ALL of the information in
> the child nodes and attributes as it loops around.



> <xsl:apply-templates />


You have not shown the input XML but if you do xsl:apply-templates then
that processes all child nodes (element nodes, text nodes, comment
nodes, processing instruction nodes) and as there are built-in default
templates (see
<http://www.w3.org/TR/xslt#built-in-rule>
) it is possible that for instance all text nodes are output.

So either do e.g.
<xsl:apply-templates select="someElement" />
meaning make sure that the above apply-templates applies only to the
element nodes you really want to be processed or make sure you override
the built-in templates e.g.
<xsl:template match="text()" />
so that for instance text nodes are not output.

Martin Honnen
http://JavaScript.FAQTs.com/
  Reply With Quote
Old 05-24-2006, 02:43 PM   #5
daz_oldham
 
Posts: n/a
Default Re: XSL Transform - Why is it writing out everything?

Spot on - thanks Martin, Joe for your help.

It is remembering these little obvious things that make a massive
difference - thanks

Darren

  Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump