XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Surekha PalaparthySubject: Help in For or while equivalent of XSLT
Author: Surekha Palaparthy
Date: 19 Aug 2005 01:22 AM
Originally Posted: 18 Aug 2005 05:54 AM
Can anyone help me in looping through a variable just for checking using XSLT? I don't want to apply or call any templates.I want plane XSLT elements which can help me .Is there anything like <xsl:loop> or <xsl:loop-for > or <xsl:loop-while>??? I want something in XSLT which can be used exactly like this part of C code. for(i=0;i<15;i++) { if( condition ) }

Postnext
Tony LavinioSubject: Help in For or while equivalent of XSLT
Author: Tony Lavinio
Date: 22 Aug 2005 07:33 AM
XSLT is a declarative language; in part that means that variables
are immutable. You cannot change their value once set. Perhaps if
you explain what you are in terms of what the input and output are,
we can give you some pointers.

Posttop
Surekha PalaparthySubject: Help in For or while equivalent of XSLT
Author: Surekha Palaparthy
Date: 22 Aug 2005 09:11 AM
My problem is something like this..
Let there be an array of Items.Items 1 to 10(Can be more,to consider only a loop).
Each item can be taken by a single person alone.But a person can take one or more items.Let there be 5 persons(Can be more , to take a loop ).
I am to loop through the data taken by each person.The XSLT has to check if the particular person number matches the value it has and give me the respective output placing a X mark saying that the particualr person has taken an item.This is a small scenario of a big XMl file that I am handling.I have made a part of XSLT and some modification is to be made in the XSLt so that my criterion can be met.

I have a call-template which calls the number of persons loop recurisvely.
I dont want to use any call-tempaltes or apply-templates as the code will become more complex.I just want to do that in a simple way where I can take up a loop.But incase if apply-templates or call-templates if the only way that I can deal with this,please let me know as to how I can go ahead ??



Original XML file is something like this:

<?xml version="1.0" encoding="ISO-8859-1"?>

<Main >
<Main1>
<Main2>
<Main3>
<Content>
<Name>NumPersons</Name>
<Value>5</Value>
</Content>
<Content>
<Name>NumItems</Name>
<Value>10</Value>
</Content>

<Content>
<Name>Item1Val</Name>
<Person>1</Person>
</Content>
<Content>
<Name>Item2Val</Name>
<Person>2</Person>
</Content>
<Content>
<Name>Item3Val</Name>
<Value>3</Value>
</Content>
<Content>
<Name>Item4Val</Name>
<Value>1</Value>
</Content>
<Content>
<Name>Item5Val</Name>
<Value>5</Value>
</Content>
<Content>
<Name>Item6Val</Name>
<Value>2</Value>
</Content>
<Content>
<Name>Item7Val</Name>
<Value>1</Value>
</Content>
<Content>
<Name>Item8Val</Name>
<Value>2</Value>
</Content>
<Content>
<Name>Item9Val</Name>
<Value>5</Value>
</Content>
<Content>
<Name>Item10Val</Name>
<Value>2</Value>
</Content>
</Main3>
</Main2>
</Main1>
</Main>


/*******************

XSLT that I made
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" version="1.0" encoding="iso-8859-1" indent="yes"/>

<xsl:variable name= "NoPersons" select="number(Main/Main1/Main2/Main3/Content[Name='NumPersons']/Value/text())"/>
<xsl:variable name= "NoPersons" select="number(Main/Main1/Main2/Main3/Content[Name='ItemNum']/Value/text())"/>


<xsl:template match="/">
<PersonSet>
<xsl:call-template name="PersonDataBase">
<xsl:with-param name="PersonNo" select="$NumPersons"/>
<xsl:with-param name="ItemNo" select="$ItemNum"/>
</xsl:call-template>
</PersonSet>

<xsl:template name="PersonDataBase">
<xsl:param name="PersonNo"/>
<xsl:if test="$PersonNo &gt; 0" >
<ItemPresence>
<!---To write code here where he has to loop through the count of ItemNo and check for the 'present person number' if took an item.If yes he has to just put a 'X' in the output XML file
<ItemPresence>
</xsl:template>

<xsl:call-template name="PersonDataBase">
<xsl:with-param name="PersonNo" select="$PersonNo- 1"/>
<xsl:with-param name="ItemNo" select="$ItemNo"/>
</xsl:call-template>
</xsl:if>
</xsl:template>

</xsl:stylesheet>

/***************************

Output XMl file :

<?xml version="1.0" encoding="ISO-8859-1"?>
<Main >
<Main1>
<Main2>
<Main3>
<Content>
<PersonNo>Person1Val</Person1>
<Value>X</Value>
</Content>
<Content>
<PersonNo>Person2Val</Person1>
<Value>X</Value>
</Content>
<PersonNo>Person3Val</Person1>
<Value>X</Value>
</Content>
<PersonNo>Person4Val</Person1>
<Value>-</Value>
</Content>
<PersonNo>Person5Val</Person1>
<Value>X</Value>
</Content>
</Main >
</Main1>
</Main2>
</Main3>

Thanks in advance

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.