Subject: RE: [xsl] only display if subnodes occur more than once From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> Date: Tue, 05 Jul 2005 14:47:47 -0400 |
You could use keys to identify the elements to output. Thus, your input:
<root> <sub_a> <elem_1/> <elem_2/> <elem_3/> </sub_a> <sub_b> <elem_1/> <elem_2/> <elem_2/> <elem_2/> <elem_3/> </sub_b> <sub_c> <elem_1/> <elem_2/> <elem_3/> </sub_c> </root>
Against this transform:
<?xml version="1.0" encoding="iso8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/> <xsl:strip-space elements="*"/>
<xsl:key match="/*/*" name="kElems" use="*"/>
<xsl:template match="root"> <xsl:copy> <xsl:for-each select="*"> <xsl:if test="count(key('kElems', .)) != count(*)"> <xsl:copy-of select="."/> </xsl:if> </xsl:for-each> </xsl:copy> </xsl:template>
</xsl:stylesheet>
Yields:
<?xml version="1.0" encoding="UTF-8"?> <root> <sub_b> <elem_1/> <elem_2/> <elem_2/> <elem_2/> <elem_3/> </sub_b> </root>
You could again use a key to identify and eliminate elements such as <elem_1>. In fact *I* should do that, to match your required output ... but I need to use a composite key for that ... and it isn't coming to me right away. If somebody else has more ready insight, please post.
<xsl:template match="/*/*"> <xsl:if test="*[count(../*[name()=name(current())]) > 1]"> <xsl:copy-of select="."/> </xsl:if> </xsl:template>
Cheers, Wendell
====================================================================== Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx Mulberry Technologies, Inc. http://www.mulberrytech.com 17 West Jefferson Street Direct Phone: 301/315-9635 Suite 207 Phone: 301/315-9631 Rockville, MD 20850 Fax: 301/315-8285 ---------------------------------------------------------------------- Mulberry Technologies: A Consultancy Specializing in SGML and XML ======================================================================
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] only display if subnodes , Aron Bock | Thread | RE: [xsl] only display if subnodes , Aron Bock |
RE: [xsl] namespaces gets copied to, Michael Kay | Date | RE: [xsl] only display if subnodes , Aron Bock |
Month |