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

RE: [xsl] OR in test


Subject: RE: [xsl] OR in test
From: TSchutzerWeissmann@xxxxxxxxxxxxxxxx
Date: Thu, 4 Jul 2002 13:44:14 +0100

Hello Ashu,

	"|" doesn't mean 'or'. Use 'or'.

Tests evaluate expressions as boolean values, and you can use boolean
operators like 'or' and 'and' to combine sub-expressions.

"|" is the union operator, and it combines sets of nodes, so if you match
"a/input | div/input" you're matching the union of those two sets of nodes.
You sometimes see it used to perform an identity test:

	aNode[count(. | key('foo',@bar)[1]) = 1]

because nodesets can't contain duplicates, the union of a node and itself
will only contain one node, so the above is one way of seeing if the context
node is the same as the first node returned by the foo key using the value
of @bar.

	aNode[generate-id(.) = generate-id(key('foo',@bar)[1])]

does exactly the same thing.

Regards,
Tom Weissmann

> -----Original Message-----
> From: ashu t [mailto:aashut@xxxxxxxxxxxxxx]
> Sent: 04 July 2002 13:34
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] OR in test 
> 
> 
> in conversion of html to wml i am using this template match for 
> <input>tag.
> <xsl:template match="a/input | div/input | center/input | p/input 
> | ul/input | li/input | tr/input | td/input | th/input | 
> table/input | font/input">
>           <xsl:variable name="type">
>    	   <xsl:value-of select="@type"/>
>           </xsl:variable>
>           <xsl:if test="$type='text'| $type='password'">
>             <xsl:choose>
>              <xsl:when test="$type='text'">
>                <xsl:element name="input">
>                    <xsl:attribute name="name">
>                    <xsl:value-of select="@name"/>
>                    </xsl:attribute>
>                    <xsl:attribute name="type">
>                    <xsl:value-of select="@type"/>
>                    </xsl:attribute>
>                    <xsl:apply-templates/>
>                 </xsl:element>
>               </xsl:when>
>               <xsl:otherwise>
>                 <xsl:element name="input">
>  	          <xsl:attribute name="name">
>  	          <xsl:value-of select="@name"/>
>  	          </xsl:attribute>
>  	           <xsl:attribute name="type">
>  	           <xsl:value-of select="@type"/>
>  	           </xsl:attribute>
>  	           <xsl:apply-templates/>
>  	        </xsl:element>
>  	       </xsl:otherwise>
>  	       </xsl:choose>
>            </xsl:if>
>     </xsl:template>
> 
> but it is not working .i want to know that is it wrong to use 
> or(|) in test.if yes then what should be the right way. and what 
> if in html text is written as TEXT(in capitals).
> as in wml only two (text and password) input types are allowed
> ashu
> 
> _________________________________________________________
> There is always a better job for you at Monsterindia.com.
> Go now http://monsterindia.rediff.com/jobs
> 
> 
>  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