![]() |
|
|
|||||||
![]() |
XML - XSL Transform - Why is it writing out everything? |
|
|
Thread Tools | Search this Thread |
|
|
#1 |
|
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" xmlns 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="ns1 </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 |
|
|
|
|
#2 |
|
Posts: n/a
|
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 |
|
|
|
#3 |
|
Posts: n/a
|
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 |
|
|
|
#4 |
|
Posts: n/a
|
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/ |
|
|
|
#5 |
|
Posts: n/a
|
Spot on - thanks Martin, Joe for your help.
It is remembering these little obvious things that make a massive difference - thanks Darren |
|