Subject: RE: [xsl] Match nodes with a range of values From: "Karl J. Stubsjoen" <karl@xxxxxxxxxxxxxxxxxxxx> Date: Thu, 15 Jul 2004 09:41:44 -0700 |
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: [xsl] 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Match nodes with a range , Michael Kay | Thread | [xsl] default namespace in xsl and , stefan krause |
RE: [xsl] default namespace in xsl , Michael Kay | Date | [xsl] [ANN] Oxygen XML Editor and X, George Cristian Bina |
Month |