Solved

In PowerBuilder, how can i hide those tag in xml export file when there is a null value being returned from the datawindow?  E.g from the script below, <Name/><Initials>SRM</Initials>,  hide <Name/>

Posted on 2009-04-06
3
1,099 Views
Last Modified: 2013-11-19
In PowerBuilder, how can i hide those tag in xml export file when there is a null value being returned from the datawindow?  
E.g from the script below, <Name/><Initials>SRM</Initials>,  i wish to hide <Name/> for being displayed in the XML file

Let me further explain my problems encountered in Powerbuilder Exported XML

Sample Scenario as below:
<Name>Johnson<MarriageDate>2001-09-09</MarriageDate></Name>
<Name>Marry<MarriageDate/></Name>
<Name>Jeannie<MarriageDate>2008-08-08</MarriageDate></Name>

Because MarriageDate element is expecting a date value, passing empty element <MarriageDate/> will cause validation error when importing the exported XML. Is there any way/workaround to resolve this to have output XML like sample below?

<Name>Johnson<MarriageDate>2001-09-09</MarriageDate></Name>
<Name>Marry</Name>
<Name>Jeannie<MarriageDate>2008-08-08</MarriageDate></Name>

0
Comment
Question by:orinauts
  • 2
3 Comments
 
LVL 39

Accepted Solution

by:
abel earned 500 total points
ID: 24174857
The simplest method to remove empty elements is to use XSLT. I don't know enough of PowerBuilder to do that by code, but if you know the basics, it seems that this article shows you how to do it: http://www.sybase.com/detail?id=1013844

Then I can help you with the XSLT part, which looks like this:

-- Abel --

<!-- ----------------------------------------------- -->

<!-- XSLT part, copies all except the empty elements -->

<!-- ----------------------------------------------- -->

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0"

    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    

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

    

    <!-- copy template, copies every element/node/text/attr -->

    <xsl:template match="node()|@*">

        <xsl:copy>

            <xsl:apply-templates select="node()|@*" />

        </xsl:copy>

    </xsl:template>
 

    <!-- a "delete"-template to remove all contents of diffgr:before -->

    <xsl:template match="*[not(text())]" />

    

</xsl:stylesheet>
 
 
 

<!-- ----------------------------------------------- -->

<!-- your input (amended with a root to make it XML) -->

<!-- ----------------------------------------------- -->

<?xml version="1.0" encoding="utf-8"?>

<root>

    <Name>Johnson<MarriageDate>2001-09-09</MarriageDate></Name>

    <Name>Marry<MarriageDate/></Name>

    <Name>Jeannie<MarriageDate>2008-08-08</MarriageDate></Name>

</root>
 
 
 

<!-- --------------------------------- -->

<!-- the output after run against XSLT -->

<!-- --------------------------------- -->

<?xml version="1.0" encoding="utf-8"?>

<root>

    <Name>Johnson<MarriageDate>2001-09-09</MarriageDate></Name>

    <Name>Marry</Name>

    <Name>Jeannie<MarriageDate>2008-08-08</MarriageDate></Name>

</root>

Open in new window

0
 
LVL 39

Expert Comment

by:abel
ID: 24174863
sorry for that wrong comment about diffgr:before, that was from something else. But it *is* a delete template and it removes all elements that do not contain any text content.
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Preface This is the third article about the EE Collaborative Login Project. A Better Website Login System (http://www.experts-exchange.com/A_2902.html) introduces the Login System and shows how to implement a login page. The EE Collaborative Logi…
Browsers only know CSS so your awesome SASS code needs to be translated into normal CSS. Here I'll try to explain what you should aim for in order to take full advantage of SASS.
The viewer will receive an overview of the basics of CSS showing inline styles. In the head tags set up your style tags: (CODE) Reference the nav tag and set your properties.: (CODE) Set the reference for the UL element and styles for it to ensu…
HTML5 has deprecated a few of the older ways of showing media as well as offering up a new way to create games and animations. Audio, video, and canvas are just a few of the adjustments made between XHTML and HTML5. As we learned in our last micr…

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now