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
Conferences Close Tree View
+ Stylus Studio Feature Requests (1192)
+ Stylus Studio Technical Forum (14621)
+ Website Feedback (249)
- XSLT Help and Discussion (7625)
-> + Use of before and after string (3) Sticky Topic
-> - How do I substitute element ty... (1)
-> + How does one add working days ... (4)
-> - Help, I have existing XLT and... (1)
-> + Need help on XSLT issue - (2)
-> + EDI to XML Conversion (7)
-> - XML To JSON Conversion using X... (1)
-> + Formatting Paragraphs to same ... (2)
-> - Grouping of records (1)
-> + Problems with xsd 1.1 (4)
-> + XML to HL7 mapping (3)
-> + XSLT 3 and Iterate (2)
-> + XSL-FO to PDF preview (3)
-> + java.lang.RuntimeException: Er... (2)
-> + Create Acroforms with Stylus X... (2)
-> + How to change XSLT parameter s... (3)
-> + how to change format of the da... (2)
-> + Search "Next 8 Results " doesn... (2)
-> - Support for Git (1)
-> + newbee (8)
-- [1-20] [21-40] [41-60] Next
+ XQuery Help and Discussion (2017)
+ Stylus Studio FAQs (159)
+ Stylus Studio Code Samples & Utilities (364)
+ Stylus Studio Announcements (113)
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.

   
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.