xsl-list
[Top] [All Lists]

RE: xsl:variable and node list

2004-10-15 00:32:36
Hi,

thats good but how would i translate this now

<xsl:variable name="withaddress">
     <xsl:copy-of
select="tblMIMCompanies[contains(translate(@building,$upperCas
e,$lowerCase),
translate($address,$upperCase,$lowerCase))='true']"/>
     <xsl:copy-of
select="tblMIMCompanies[contains(translate(@number,$upperCase,
$lowerCase),tr
anslate($address,$upperCase,$lowerCase))='true']"/>
     <xsl:copy-of
select="tblMIMCompanies[contains(translate(@street,$upperCase,
$lowerCase),tr
anslate($address,$upperCase,$lowerCase))='true']"/>
     <xsl:copy-of
select="tblMIMCompanies[contains(translate(@town,$upperCase,$l
owerCase),tran
slate($address,$upperCase,$lowerCase))='true']"/>
     <xsl:copy-of
select="tblMIMCompanies[contains(translate(@postcode,$upperCas
e,$lowerCase),
translate($address,$upperCase,$lowerCase))='true']"/>
     <xsl:copy-of
select="tblMIMCompanies[contains(translate(@country,$upperCase
,$lowerCase),t
ranslate($address,$upperCase,$lowerCase))='true']"/>
     <xsl:copy-of
select="tblMIMCompanies[contains(translate(@address,$upperCase
,$lowerCase),t
ranslate($address,$upperCase,$lowerCase))='true']"/>
    </xsl:variable>

Firsth, you have

tblMIMCompanies[contains(translate(@building,$upperCase,$lowerCase),translate($address,$upperCase,$lowerCase))='true']

which can be simplified to

tblMIMCompanies[contains(translate(@building,$upperCase,$lowerCase),translate($address,$upperCase,$lowerCase))]

as contains() already returns a boolean value.

Anyhow, if the order is important here, i.e. tblMIMCompanies elements whose 
@building matchs must come before the ones whose @number matchs, then you have 
to use a different approach, ie. build the RTF and convert that into a node-set 
using an extension function. Also, if the above can and must contain dublicate 
tblMIMCompanies entries, then you have to go with the RTF to node-set way.

But, if you just want a set, then

  <xsl:copy-of 
select="tblMIMCompanies[contains(translate(@building,$upperCase,$lowerCase),translate($address,$upperCase,$lowerCase))
                                   and 
contains(translate(@number,$upperCase,$lowerCase),translate($address,$upperCase,$lowerCase))
                                   and 
contains(translate(@street,$upperCase,$lowerCase),translate($address,$upperCase,$lowerCase))
                                   and 
contains(translate(@town,$upperCase,$lowerCase),translate($address,$upperCase,$lowerCase))
                                   and 
contains(translate(@postcode,$upperCase,$lowerCase),translate($address,$upperCase,$lowerCase))
                                   and 
contains(translate(@country,$upperCase,$lowerCase),translate($address,$upperCase,$lowerCase))
                                   and 
contains(translate(@address,$upperCase,$lowerCase),translate($address,$upperCase,$lowerCase))]"/>

should get you there.

Cheers,

Jarno - Lights Of Euphoria: True Life


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