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
Bob ChauvinSubject: Reusing a prior valid value in an input row if the current row is missing a value.
Author: Bob Chauvin
Date: 26 Feb 2008 02:57 PM
Consider the following input xml snippit:

<data>
<row> <name>bob</name> <acct>12</acct><date>2007-01-11</date> </row>
<row> <name>bob</name> <acct></acct> <date></date> </row>
<row> <name>bob</name> <acct>13</acct> <date></date> </row>
</data>

If a row doesn't have a name, account or date it will pull it from a recent row that has the value, like so:

<out>
<row> <name>bob</name> <acct>12</acct><date>2007-01-11</date> </row>
<row> <name>bob</name> <acct>12</acct> <date>2007-01-11</date> </row>
<row> <name>bob</name> <acct>13</acct> <date>2007-01-11</date> </row>
</out>

Postnext
Ivan PedruzziSubject: Reusing a prior valid value in an input row if the current row is missing a value.
Author: Ivan Pedruzzi
Date: 26 Feb 2008 05:55 PM

See if the attached solution works for you, it should perform reasonably well


Ivan Pedruzzi
Stylus Studio Team


Documentpreceding.xsl

Postnext
Bob ChauvinSubject: Reusing a prior valid value in an input row if the current row is missing a value.
Author: Bob Chauvin
Date: 26 Feb 2008 07:09 PM
So, the template acts like a function to return the first non blank/empty sibling value from <strong>the desired source element</strong>? I want to make sure the third output row's date is pulled from row

So, in the example of the third output row date:

Current date source element is blank ==> prior row date element is blank ==> next prior row date is valid, return this date.

Thank you.

Postnext
Ivan PedruzziSubject: Reusing a prior valid value in an input row if the current row is missing a value.
Author: Ivan Pedruzzi
Date: 26 Feb 2008 10:35 PM
I see your point, try the following

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="*">
<xsl:copy>
<xsl:if test="string-length(.) = 0">
<xsl:variable name="name" select="local-name()"/>
<xsl:apply-templates select="preceding::*[count(*)=0 and local-name() = $name and text()][1]/text()"/>
</xsl:if>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>


-------------------------------------------------
input

<data>
<row>
<name>bob</name>
<acct>12</acct>
<date>2007-01-11</date>
</row>
<row>
<name>bob1</name>
<acct></acct>
<date></date>
</row>
<row>
<name></name>
<acct>13</acct>
<date></date>
</row>
<row>
<name></name>
<acct></acct>
<date>2007-01-12</date>
</row>
</data>

-------------------------------------------------
output

<?xml version='1.0' ?>
<data>
<row>
<name>bob</name>
<acct>12</acct>
<date>2007-01-11</date>
</row>
<row>
<name>bob1</name>
<acct>12</acct>
<date>2007-01-11</date>
</row>
<row>
<name>bob1</name>
<acct>13</acct>
<date>2007-01-11</date>
</row>
<row>
<name>bob1</name>
<acct>13</acct>
<date>2007-01-12</date>
</row>
</data>

Ivan Pedruzzi
Stylus Studio Team

Posttop
Bob ChauvinSubject: Reusing a prior valid value in an input row if the current row is missing a value.
Author: Bob Chauvin
Date: 28 Feb 2008 10:42 AM
Beautiful! Thanks Ivan.

 
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.