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="";

<xsl:output method="text" />

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

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


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

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.


On 8/28/05, Trevor Nicholls <trevor@xxxxxxxxxxxxxxxxxx> wrote:
> Hello
> Is there a concise test for the context node that will distinguish between
> 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