Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
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
Medium Priority
?
1,180 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 39

Accepted Solution

by:
abel earned 2000 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

Enroll in October's Free Course of the Month

Do you work with and analyze data? Enroll in October's Course of the Month for 7+ hours of SQL training, allowing you to quickly and efficiently store or retrieve data. It's free for Premium Members, Team Accounts, and Qualified Experts!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Create a Windows 10 custom Image with custom task bar and custom start menu using XML for deployment.
Without even knowing it, most of us are using web applications on a daily basis.  In fact, Gmail and Yahoo email, Twitter, Facebook, and eBay are used by most of us daily—and they are web applications. We generally confuse these web applications to…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn how to dynamically set the form action using jQuery.

610 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