This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: determining whether an XPATH points to an element or attribute


> <xsl:template match="//tagname1[fads and @fads]/tagname2">
> <xsl:choose>
> <xsl:when test=" self::*"><!-- if it points to element -->
> <TagOperation>
> </xsl:when>
> <xsl:otherwise><!-- if it points to attribute-->
> <AttributeOperation>
> </xsl:otherwise>
> </xsl:choose>
> </xsl:template>

>With this template only elements with name "tagname2" (and tagname1 as
>parent, which ...) will be processed. So you don't need to test on element
>or attribute.
The match path is an arbitrary XPATH I obtain from another file.  I have to test whether it is an attribute because I
didn't know what

<Path>//tagname1[@fads]</Path>

points to when I generated the above template.  If I could check what it pointed to using XSLT It wouldn't be a problem
This is what I use to generate the above template from the Path element.

<xsl:namespace-alias stylesheet-prefix="pre" result-prefix="xsl"/>
<xsl:template match="Path">
	<pre:template>
		<xsl:attribute name="match"><xsl:value-of select="current()"/></xsl:attribute>
		<pre:choose>
			<!-- is element case -->
			<pre:when test="self::*">
				<elementCase/>
			</pre:when>
			<!-- is attribute case -->
			<pre:otherwise>
				<attributeCase/>
			</pre:otherwise>
		</pre:choose>
	</pre:template>
</xsl:template>

which produces.

<xsl:template match="//tagname1[@fads]">
	<xsl:choose>
		<!-- is element case -->
		<xsl:when test="self::*">
			<elementCase/>
		</xsl:when>
		<!-- is attribute case -->
		<xsl:otherwise>
			<attributeCase/>
		</xsl:otherwise>
	</xsl:choose>
</xsl:template>

Edward

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]