[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: How to delete empty element tag from output XML?
Thank you Michael for your help. I try your suggestion but still have trouble. Maybe my question is not clear before. I give a scenario below. Input XML: <?xml version="1.0" encoding="UTF-8"?> <test> <people> <N1>Tom</N1> <N2>Hopkins</N2> <N3 /> <Sex>Male</Sex> </people> <people> <N1>Amy</N1> <N2>Smith</N2> <N3>R</N3> <Sex /> </people> </test> Expected output XML: <?xml version="1.0" encoding="UTF-8"?> <NameList> <My_Favorite> <Star> <FirstName>Tom</FirstName> <LastName>Hopkins</LastName> <MI>N/A</MI> <Gender>Male</Gender> </Star> <Star> <FirstName>Amy</FirstName> <LastName>Smith</LastName> <MI>R</MI> </Star> </My_Favorite> </NameList> You may notice 1). if <Sex> is empty as in Amy case, don't print <Gender /> 2). if <N3> is empty as in Tom case, I need a output <MI>N/A</MI>, i.e. a default of "N/A". 3). the structure and tag of output different with input. As I mentioned before, the last thing I want to do is use <xsl:if> in XSLT stylesheet to compare every segment because it's too tedious given the fact I have numberous tags need to process. Thanks again. have a good day. Guangzu -----Original Message----- From: Kay Michael [mailto:Michael.Kay@xxxxxxx] Sent: Wednesday, October 25, 2000 4:32 AM To: 'xsl-list@xxxxxxxxxxxxxxxx' Subject: RE: How to delete empty element tag from output XML? > I use XSLT to convert XML to XML and HTML. I need to delete > the tag when > there are no value in the output. for example, I have XSLT as > following: > <NAME><xsl:value-of select="N1" /></NAME> > I don't need <NAME /> or <NAME> </NAME>. > One way I can do it is use <xsl:if> outside of <Name> tag, > but that's too > much for me because I have a lot of similar tags. Try <xsl:template match="*" mode="copy-unless-empty"> <xsl:if test="node()"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:value-of select="."/> </xsl:copy> </xsl:if> </xsl:template> and then use <xsl:apply-templates mode="copy-unless-empty"/> to process these elements. > > Another related question is that some time I need put a > default value if nothing there. A similar technique should do the trick. Mike Kay XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|