Re: [xsl] testing for position of an element and displaying it accordingly

Subject: Re: [xsl] testing for position of an element and displaying it accordingly
From: ms <mina_hurray@xxxxxxxxx>
Date: Fri, 19 Jan 2007 07:29:48 -0800 (PST)
Hi Alexey:

Thanks for your response. 
I will try to explain this a little bit more. 

<r1>
<a>test</a>
<a>test2</a>
<b>test test</b>
<a>test3</a>
</r1>

<xsl:template match="r1">
<!-- The mode is applid for any <a> element that
appears before the <b> element in the xml-->
<xsl:if test child::a>
<xsl:apply-templates select="a" mode="test"/>
</xsl:if>
<ol>
<li type="1">
<xls:applly-templates/>
</li>
</ol>
</xsl:template>

So, r1 is formatted with number 1. 

<xsl:template match="a" mode="test">
<xsl:apply-templates mode="test"/>
</xsl:template>
This template for <a> is basically for <a> that
appears above the <b> element. It does not apply to
<a> that appears after <b> and so <a> appearing after
<b> is not displayed. 

<xsl:template match="b">
<xsl:apply-templates/>
</xsl:template>

My final output applying these templates is:
Test
Test2
1)test test

As you can see , since I am not accounting for the <a>
after <b> it fails to be displayed. 

My desired out put is:
Test
Test2
1)test test
test3 

How do I check that if there are <a> elements before
<b> element inside <r1>, then they should be displayed
before the <b> element. And if there are <a> elements
after the <b> element, they should be displayed after
the <b> element? 







--- Alexey Nickolaenkov <nikolaenkov@xxxxxxxxxxxx>
wrote:

> Hi man
> m> Please let me know if this is possible?
> that's possible.
> 
> if your input looks like above and you want to
> produce
> 
> m> Test
> m> Test2
> m> 1)test test
> m> test3
> 
> the following rules will suit you
> 
> <xsl:template match="/">
>    <xsl:copy>
>       <xsl:apply-templates select="r1"/>
>    </xsl:copy>
> </xsl:template>
> 
> <xsl:template match="r1">
>    <xsl:apply-templates select="node()"/>
> </xsl:template>
> 
> <xsl:template match="a">
>    <xsl:value-of select="."/>
> </xsl:template>
> 
> <xsl:template match="b">
>    <xsl:text>1)</xsl:text>
>    <xsl:value-of select="."/>
> </xsl:template>
> 
> 
> but I dont think that this is what you really want..
> Can you describe
> the desired xml output?
> 
> 
> -- 
> Alexey                           
> mailto:nikolaenkov@xxxxxxxxxxxx
> 
> 



 
____________________________________________________________________________________
Do you Yahoo!?
Everyone is raving about the all-new Yahoo! Mail beta.
http://new.mail.yahoo.com

Current Thread