xsl-list
[Top] [All Lists]

Re: Match nodes with a range of values

2004-07-15 08:06:09


as I said in my original reply I don't think you can do this with a pure
xslt 1 expression, you could in xslt2 or you need to use an xslt costruct:

<SCHED>
        <Schedule>
        <Day id="1">
                        <Squad id="1">

<event id="1" timebeg="1350" timeend="1500"/>

<event id="1" timebeg="1100" timeend="1400"/>

                        <event id="1" timebeg="900" timend="960"/>
                        <event id="2" timebeg="960" timend="1020"/>
                        <event id="3" timebeg="1020" timend="1080"/>
                        <event id="4" timebeg="1080" timend="1140"/>
                </Squad>
                        <Squad id="3">
                        <event id="4" timebeg="900" timend="960"/>
                        <event id="2" timebeg="960" timend="1020"/>
                        <event id="3" timebeg="1020" timend="1080"/>
                        <event id="1" timebeg="1080" timend="1140"/>
                        <event id="1" timebeg="1081" timend="1141"/>
                </Squad>
                        <Squad id="7">
                        <event id="2" timebeg="900" timend="960"/>
                        <event id="3" timebeg="960" timend="1020"/>
                        <event id="4" timebeg="1020" timend="1080"/>
                        <event id="1" timebeg="1080" timend="1140"/>
                </Squad>
        </Day>
        <Day id="2"/>
        <Day id="3"/>
        <Day id="4"/>
        <Day id="5"/>
        <Day id="6"/>
        </Schedule>
    <Squads>
        <Squad timebeg="900" timeend="1140" id="1" group="1" name="Level
8,9,10" description="Girls Optionals Level 8,9,10">
                <Days>
                <Day id="1"/>
                <Day id="3"/>
                <Day id="5"/>
            </Days>
        </Squad>
        <Squad timebeg="900" timeend="1140" id="3" group="1" name="Level 7"
description="Girls Optional Levels 7">
                <Days>
                <Day id="1"/>
                <Day id="3"/>
                <Day id="5"/>
            </Days>
        </Squad>
        <Squad timebeg="900" timeend="1140" id="3" group="2" name="Level 6"
description="Girls Compulsory Team Level 6">
                <Days>
                <Day id="1"/>
                <Day id="3"/>
                <Day id="5"/>
            </Days>
        </Squad>
    </Squads>
    <groups>
        <group id="1" name="Optional Team" description="Girls Optional Team"/>
    </groups>
    <events>
        <event id="1" name="Bars" description="Women's Uneven Bars"
location="1"/>
    </events>
    <locations>
        <location id="1" map="C4" description="Girls Comp Bar Area"/>
    </locations>
    <Days>
        <Day id="1">Monday</Day>
        <Day id="2">Tuesday</Day>
        <Day id="3">Wednesday</Day>
        <Day id="4">Thursday</Day>
        <Day id="5">Friday</Day>
        <Day id="6">Saturday</Day>
        <Day id="7">Sunday</Day>
    </Days>
</SCHED>






<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">

<xsl:output indent="yes"/>

<xsl:template match="/">
equal:
<xsl:copy-of select="/SCHED/Schedule/Day/Squad/event[(_at_)id='2']
 [(_at_)timebeg = ../preceding-sibling::Squad/event[(_at_)id='2']/@timebeg]
"/>
overlap:
<xsl:for-each select="/SCHED/Schedule/Day/Squad/event[(_at_)id='1']">
<xsl:if
test="../../Squad/event[(_at_)id='1'][generate-id()!=generate-id(current())]
[(_at_)timebeg &lt;= current()/@timebeg and @timeend &gt;= current()/@timebeg]">
<xsl:copy-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>


$ saxon squad.xml squad.xsl
<?xml version="1.0" encoding="utf-8"?>
equal:
<event id="2" timebeg="960" timend="1020"/>
overlap:
<event id="1" timebeg="1350" timeend="1500"/>

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________


<Prev in Thread] Current Thread [Next in Thread>