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

Re: [xsl] testing for attribute-only


Subject: Re: [xsl] testing for attribute-only
From: Mukul Gandhi <gandhi.mukul@xxxxxxxxx>
Date: Sun, 28 Aug 2005 11:07:27 +0530

Hi Trevor,
   Probably you want something like

 <?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">

<xsl:output method="text" />

<xsl:template match="/root">
   <xsl:apply-templates select="a" />
</xsl:template>

<xsl:template match="a">
   <xsl:if test="not(@*) and not(node())">
     <xsl:value-of select="position()" /> empty element
   </xsl:if>
   <xsl:if test="@* and not(node())">
     <xsl:value-of select="position()" /> only attributes
   </xsl:if>
   <xsl:if test="not(@*) and node()">
     <xsl:value-of select="position()" /> no attribute, but has child nodes
   </xsl:if>
   <xsl:if test="@* and node()">
     <xsl:value-of select="position()" /> has attribute and also child nodes
   </xsl:if>
</xsl:template>

</xsl:stylesheet>

The XML I used is
<root>
 <a></a>
 <a docref="123456"/>
 <a>some text</a>
 <a case="2"><elementary>my dear Watson</elementary></a>
</root>

This is just a dummy example to illustrate the concept. I have used
position() function to see for which "a" node the output is coming.

Regards,
Mukul

On 8/28/05, Trevor Nicholls <trevor@xxxxxxxxxxxxxxxxxx> wrote:
> Hello
>
> Is there a concise test for the context node that will distinguish between
a
> node that has attributes at most:
>
>  <a><a/>
>  <a docref="123456"/>
>
> and a node that has more than attributes?
>
>  <a>some text</a>
>  <a case="2"><elementary>my dear Watson</elementary><a/>
>
> I have been inadvertently dropping a few dozen of the latter type in trying
> to clean up several thousand of the former in my input documents.
>
> Cheers
> Trevor


Current Thread
Keywords
xml