[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

[xsl] Ignoring an empty child


Subject: [xsl] Ignoring an empty child
From: "Mark" <mark@xxxxxxxxxxxx>
Date: Sat, 8 Sep 2012 03:06:26 -0700

In some <Article> elements, the <Comment> element is empty (usually it contains another <Article> element or set of <Article> elements. When <Comment> is empty, I want to bypass the transformations done in the Comment template below. I cannot seem to get the code to ignore empty <Comment> elements.

Input:
<Article>
         <Person>Gerald M. van Zanten</Person>
         <Title>New issues: Slovakia</Title>
         <IssueName>Sep/Oct</IssueName>
         <IssueNumber>5</IssueNumber>
         <Year>2007</Year>
         <Page>37</Page>
         <Comment/> <!-- WHEN EMPTY ELEMENT MATCHED, IGNORE
</Article>

Template:
<xsl:template match="Comment">
<xsl:if test="not(empty(.))"> <!-- THIS DOES NOT SEEM TO WORK
<!-- <xsl:if test="Article"> NOR DOES THIS -->
<span class="comment">
<xsl:text> {Comment: </xsl:text>
<xsl:for-each-group select="Article" group-by="Person">
<xsl:sort select="Year"></xsl:sort>
<xsl:sort select="IssueNumber" data-type="number"></xsl:sort>
<xsl:sort select="Page"></xsl:sort>
<xsl:sort select="Title" collation="{$sorting-collation}"></xsl:sort>
<!-- <xsl:sort select="Person" collation="{$sorting-collation}"></xsl:sort> -->
<xsl:if test="not(Title eq preceding-sibling::Article[1]/Title)">
<span class="comment-title">
<xsl:apply-templates select="Title"></xsl:apply-templates>
</span>
</xsl:if>
<xsl:apply-templates select="Person"></xsl:apply-templates>
<!--and for each citation-->
<!-- Dump duplicate citations for 1939-1999 data -->
<xsl:if test="not(. eq preceding-sibling::Article[1])">
<xsl:call-template name="citation"></xsl:call-template>
</xsl:if>
</xsl:for-each-group>
<xsl:text>} </xsl:text>
</span>
</xsl:if>
</xsl:template>



Current Thread