[ utvara @ 01.10.2004. 01:49 ] @
Jel zna neko zasto ovo ne radi??
<xsl:value-of select="document('lang/test.xml')/main/word[@id = @name]" />

@name je atribut iz trenutnog noda

Premostio sam problem sa
<xsl:variable name="aaa"><xsl:value-of select="@name" /></xsl:variable>
<xsl:value-of select="document('lang/test.xml')/main/word[@id = $aaa]" />

ali me interesuje da li ima neko elegantnije resenje?

Bonus pitanje za sto poena:

ako je test.xml

zaglavlje

<lang:main id="EN">
<word id="prezime">Last name</word>
</lang:main>

kako bi glasio select sa namespace-om???
[ -zombie- @ 01.10.2004. 17:11 ] @
to prvo ne radi, zato što taj select upoređuje @id atribut svake reči sa @name atributom iste reči, pa to neće nikad da poleti.. ;)

drugim rečima, moraš explicitno da navedeš da se @name ne odnosi na context node unutar xpath izraza već na tekući node unutar XSLTa. koliko ja poznajem XSLT (ne mnogo), ne znam za elegantniji način od ovog tvog..


a za bonus, select sa NSom je prost: /lang:main/word[@id=$name], stim da moraš prvo da registruješ "lang" NS prefix, jer se upoređivanje ne vrši sa prefixom, već sa kompletnim NSom (u prevodu, /x:main/word[@id=$name] je potpuno ekvivalentno prethodnom selectu ako je "x" prefix registrovan ka istom NSu kao i "lang" prefix u target xml dokumentu)

e sad, kako se u XPATHu registruju NS prefixi već zavisi od implementacije ili konkretne tehnologije u okviru koje se xpath koristi. pošto se ti zanimaš XSLTom, trebalo bi da je dovoljno da u XSL šablonu (recimo u root elementu) definišeš sve NS prefixe koje ćeš koristiti u XPATHu..

ili alternativno, imaš local-name() i namespace-uri() funkcije u XPATHu..