xsl-list
[Top] [All Lists]

RE: xpath question, getting count of cousins

2003-02-25 14:13:23
Trying to count the preceding-siblings?-cousins? of input[(_at_)type='radio']
that belong to the current group or form:

Input example:
<html>
<form id="1">
        <input type="radio" />
</form>
<form id="2">
        <input type="text" />
        <radiogroup>
        <input type="radio" />
        <p>
                <input type="radio" />
                <input type="radio" />
        </p>
        <input type="radio" />
        <input type="radio" />
        </radiogroup>
</form>
</html>

processing form[(_at_)id='2'], the result of my xpath should enable the 
following
indexing of radio buttons:

Output example:
<form id="2">
        <input type="text" />
        <input type="radio" id="radio_1"/>
        <p>
                <input type="radio" id="radio_2" />
                <input type="radio" id="radio_3" />
        </p>
        <input type="radio" id="radio_4" />
        <input type="radio" id="radio_5" />
        </radiogroup>
</form>

the closest i've come is with match="input[(_at_)type='radio']"
<xsl:variable name="idx"
select="count(preceding-sibling::input[(_at_)type='radio'])+1"/>
which only works per level:
        1
                <p>
                        1
                        2
                </p>
        2
        3

or
<xsl:variable name="idx" 
select="count(preceding::input[(_at_)type='radio'])+1"/>
which ignores the radioGroup boundary.

Basically each radio needs to count the preceding relatives of his own
radiogroup family.

or am i thinking this through wrong...?

TIA!




-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com]On Behalf Of 
G. Ken Holman
Sent: Tuesday, February 25, 2003 1:47 PM
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] xpath question, getting last instance of element


At 2003-02-25 13:37 -0500, Alan Stein wrote:
I'm trying to figure out how to select the final instance of
"DDD" in the
following example,

(//DDD)[last()]

By putting the XPath expression in parentheses you are obtaining
the set of
all DDD elements from the whole document.  Then, applying the
predicate to
the entire set, you end up with the last DDD.  Had you not used
parentheses
you would end up with the set of all DDD elements that are the last of
their sibling DDD elements.

I hope this helps.

................... Ken


--
Upcoming hands-on in-depth XSLT/XPath and/or XSL-FO
                              North America:      June 16-20, 2003

G. Ken Holman                mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Crane Softwrights Ltd.         http://www.CraneSoftwrights.com/s/
Box 266, Kars, Ontario CANADA K0A-2E0   +1(613)489-0999 (F:-0995)
ISBN 0-13-065196-6                      Definitive XSLT and XPath
ISBN 0-13-140374-5                              Definitive XSL-FO
ISBN 1-894049-08-X  Practical Transformation Using XSLT and XPath
ISBN 1-894049-10-1              Practical Formatting Using XSL-FO
Male Breast Cancer Awareness http://www.CraneSoftwrights.com/s/bc


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




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