XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
dave garciaSubject: Problem with deep node copy and template matching using XSLT V1.0.
Author: dave garcia
Date: 08 Jan 2008 11:58 AM
Greetings,

I have an XML document that I regenerate in a stylesheet doing a deep node copy and in the same stylesheet do a template match so I can alter a part of the document. Upon producing my output it seems I have an element that is missing all of it's children (child elements) and I am guessing it may be because of the template match and the context associated with it in my stylesheet. The following code illustrates my problem and point:

XML Input:
<StructureList>
<Structure Type="WindowOne" Readonly="0">
<Column Name="Name">JbOne</Column>
<Column Name="NextID">1010</Column>
<Column Name="WindowPaneList">X1,Y2,X6</Column>
<Column Name="SnapToGrid">1</Column>
<Column Name="ZoomValue">100</Column>
<Collection Name="MetBag" Type="MetProperty">
<SubRecord>
<Column Name="Name">Execmode</Column>
</SubRecord>
<SubRecord>
<Column Name="Name">Preserve</Column>
</SubRecord>
</Collection>
<Column Name="WindowOneSizing">0000 0005 0009</Column>
</Structure>
</StructureList>

XML output currently produced incorrectly follows:

<Column Name="WindowPaneList">Y2,X6</Column>

XML output that is desired follows:

<Structure Type="WindowOne" Readonly="0">
<Column Name="Name">JbOne</Column>
<Column Name="NextID">1010</Column>
<Column Name="WindowPaneList">Y2,X6</Column>
<Column Name="SnapToGrid">1</Column>
<Column Name="ZoomValue">100</Column>
<Collection Name="MetBag" Type="MetProperty">
<SubRecord>
<Column Name="Name">Execmode</Column>
</SubRecord>
<SubRecord>
<Column Name="Name">Preserve</Column>
</SubRecord>
</Collection>
<Column Name="WindowOneSizing">0000 0005 0009</Column>
</Structure>

So as you can see after processing the "WindowPaneList" element correctly it is the only thing that comes back as output, all the other columns in the structure are missing. Below is the stylesheet in question:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output indent="no" method="xml"/>

<xsl:template match="node()">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="StructureList/Structure[contains(@Type,'WindowOne')][Column[@Name='WindowPaneList']]">

<Column Name='WindowPaneList'>
<xsl:call-template name="remvals_windowpane">
<xsl:with-param name="wplist" select="$keys"/>
</xsl:call-template>
</Column>
<xsl:text>&#10;</xsl:text>

</xsl:template>

I have tried to change the template matching several different ways to get the right context and produce the right output but cannot seem to do it, or am I approaching this wrong altogether? any help is appreciated. By the way I am only allowed to use XSLT V1.0.

TIA,

David

Posttop
dave garciaSubject: Problem with deep node copy and template matching using XSLT V1.0.
Author: dave garcia
Date: 08 Jan 2008 02:12 PM
Originally Posted: 08 Jan 2008 02:10 PM
Problem was with the match, should be:

<xsl:template match="StructureList/Structure[contains(@Type,'WindowOne')]/Column[@Name='WindowPaneList']">

Works fine now, topic closed.

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.