RE: Match nodes with a range of values
I would settle for: 1) select all event nodes id=1 2) pass off current() to a named template 3) in a for-each loop, (identify, find, mark, return) the conflicting times -- an ugly <xsl:choose> would suffice, or a simple <xsl:if> if that works. The XML source is not huge, and by examining each event by id makes the source even smaller. Does something like this seem reasonable? What I don't need to do, is return a document tree fragment. (hope that made sense) VISUALLY: I might add a layer to my HTML source that is the presumed overlapping / conflicting scheduled event. I have uploaded a sample of what I have so far here: HTML Sample Result: http://www.meetscoresonline.com/test_sched.html XSLT: http://www.meetscoresonline.com/test_sched.xsl XML Source: http://www.meetscoresonline.com/sched.xml Karl -----Original Message----- From: Michael Kay [mailto:mhk@xxxxxxxxx] Sent: Thursday, July 15, 2004 8:43 AM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: RE: Match nodes with a range of values > "Select all nodes where current nodes timebeg falls between > the timebeg and timeend of all event 1's". You can do this in XPath 2 as //node[every $n in //node[@id=1] satisfies (@timebeg ge $n/@timebeg and @timebeg le $n/@timeend)] You can't do general joins in XPath 1 (it's not relationally complete). The nearest you can get is <xsl:for-each select="//node"> <xsl:variable name="n" select="."/> <xsl:copy-of select="$n[not(//node[@id=1][@timebeg <= $n/@timebeg or @timeget >= $n/@timeend)]"/> </xsl:for-each> Michael Kay
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format