Subject: RE: equivalent for 'while'
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 16 Feb 2005 17:37:07 -0000
|
> Well I have an XML document which has several <DEFCONCEPT> elements.
> Each of these elements contain certain <CHILD> sub-elements
> of the form
> below:
>
> <DEFCONCEPT id="123" name="abc">
> <CHILD ref="567">abcChild</CHILD>
> </DEFCONCEPT>
>
> <DEFCONCEPT id="567" name="abcChild">
> <CHILD ref="890">abcGrandChild</CHILD>
> </DEFCONCEPT>
>
> <DEFCONCEPT id="890" name="abcGrandChild"/>
>
> How could I then place conditions when processing this XML
> doc such that
> it continues searching for a <CHILD> element until it finds
> 'abcGrandChild' ?
>
> I thought perhaps a single statement could loop until the condition
> becomes 'true' which is obviously not in lines with declarative
> programming. How else is it then possible?
Don't think in terms of the the program processing the first element, then
the second, and so on, in a time-ordered manner. Rather, describe the set of
elements that you want to be processed: that is, preceding-siblings of the
DEFCONCEPT named "abcGrandChild":
<xsl:for-each
select="DEFCONCEPT[name="abcGrandChild"]/preceding-sibling::DEFCONCEPT"
Michael Kay
http://www.saxonica.com/
|