xsl-list
[Top] [All Lists]

Re: testing for attribute-only

2005-08-27 22:37:27
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(_at_)castingthevoid(_dot_)com> 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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>