Re: [xsl] matching attribute values that are in range

Subject: Re: [xsl] matching attribute values that are in range
From: Andrew Franz <afranz0@xxxxxxxxxxxxxxxx>
Date: Thu, 20 Jul 2006 07:39:55 +1000
andrew welch wrote:

On 7/19/06, Jeff Sese <jsese@xxxxxxxxxxxx> wrote:

Thanks andrew and florent this helped a lot. What i used was:

document('source2.xml')/entry[@id=current()/@id and
@type=current()/@type and (@n=current()/@n or @n[matches(.,'-') and
number(substring-before(.,'-')) &lt;= current()/@n and
number(substring-after(.,'-')) >= cunrrent()/@n])]


Was obfuscation part of the requirements? :-)

Seriously, you could do with a few variables in there...


How about?

<xsl:variable name="min" select="number(substring-before(.,'-'))" />
<xsl:variable name="max" select="number(substring-after(.,'-'))" />
<xsl:variable name="id" select="current()/@id" />
document('source2.xml')/entry[
       (@id=current()/@id)
and (@type=current()/@type)
and ((@n=current()/@n)
    or @n[matches(.,'-')
               and ($min &lt;= current()/@n)
               and ($max &gt;= current()/@n)]
  )
]

Fixed typo ('cunrrent'), added brackets for clarity, replaced '>' with '&gt;'

Current Thread