RE: [xsl] checking for a node in the ancestor axis

Subject: RE: [xsl] checking for a node in the ancestor axis
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Wed, 22 Oct 2003 08:34:45 +0100
Why not use a boolean variable? Instead of

		<xsl:variable name="CtrlExists">
			<xsl:choose>
				<xsl:when test="_Ctrl">
					<xsl:value-of select="'1'"/>
				</xsl:when>
				<xsl:otherwise>
					<xsl:value-of select="'0'"/>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:variable>

write

<xsl:variable name="CtrlExists" select="boolean(_Ctrl)"/>

Having said that, I can't see at first glance why your code isn't
working.

Michael Kay

> -----Original Message-----
> From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx 
> [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of 
> Murali Korrapati
> Sent: 22 October 2003 02:24
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] checking for a node in the ancestor axis
> 
> 
> Hi,
> 
>    I have a situation here, where I have to check for the 
> node in the ancestor axis. I tried setting a flag depending 
> upon _Ctrl node into a xsl:variable and checking 
> for that variable later. But it doesn't seem like working. 
> 
> 	<xsl:if test="$CtrlExists='1'"> in the following code 
> is always turning out false
> 
> But I can't do <xsl:if test="../../_Ctrl">, b'cos my xml 
> inside <Rpt_Inven> varies all the time.
> 
> I am sure there is a better way to do this. But I couldn't  
> get to it. Is there any proper way to do this.
> 
> Thanks a lot.
> 
> my xml:
> <data xmlns="urn:abcd:layers">
> 	<Rpt_Inven xmlns="urn:abcd:RepInven">
> 		<Invens>
> 			<Inven>
> 				<Entity>Ent1</Entity>
> 			</Inven>
> 			<Inven>
> 				<Entity>Ent2</Entity>
> 			</Inven>
> 			<Inven>
> 				<Entity>Ent3</Entity>
> 			</Inven>
> 		</Invens>
> 	</Rpt_Inven>
> 	<!-- This node is optional. Doesn't exists all the time -->
> 	<_Ctrl xmlns="" xmlns:lay="urn:abcd:layers"  
> xmlns:rep="urn:abcd:RepInven" xmlns:obj="urn:abcd:objects">
> 		<_Table>
> 			<_Col name="Entity"/>
> 		</_Table>
> 	</_Ctrl>
> </data>
> 
> my xsl:
> 
> <xsl:stylesheet version="1.0" xmlns="" 
> xmlns:lay="urn:abcd:layers" xmlns:rep="urn:abcd:RepInven" 
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> 	<xsl:output method="xml" encoding="UTF-8"/>
> 	<xsl:template match="lay:data">
> 		<xsl:variable name="CtrlExists">
> 			<xsl:choose>
> 				<xsl:when test="_Ctrl">
> 					<xsl:value-of select="'1'"/>
> 				</xsl:when>
> 				<xsl:otherwise>
> 					<xsl:value-of select="'0'"/>
> 				</xsl:otherwise>
> 			</xsl:choose>
> 		</xsl:variable>
> 		<_Ctrl>
> 			<xsl:for-each select="rep:Rpt_Inven/rep:Invens">
> 				<_Table>
> 					<_Col name="Entity">
> 						<xsl:if 
> test="$CtrlExists='1'">
> 							
> <xsl:for-each select="rep:Inven/rep:Entity">
> 								
> <xsl:sort select="."/>
> 								<_Item>
> 								
> 	<xsl:value-of select="."/>
> 								</_Item>
> 							</xsl:for-each>
> 						</xsl:if>
> 					</_Col>
> 				</_Table>
> 			</xsl:for-each>
> 		</_Ctrl>
> 	</xsl:template>
> </xsl:stylesheet>
> 
> 
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


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


Current Thread