[XSLT/XPATH] syntax vraag

Pagina: 1
Acties:

  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
Ik ben bezig met het maken van een grote multi-language website door middel van XML, XSLT.
Nu heeft het XML document een aantal menu items die in de XSLT file vertaald moeten worden.

De vertalingen van woorden lever ik aan in de XML op de volgende manier:
code:
1
2
3
4
5
6
7
<framework>
 <locale>
  <entry name="Woord">Vertaling</entry>
  <entry name="Woord">Vertaling</entry>
  etc...
 </locale>
</framework>


In de XSLT doe ik dan het volgende:
code:
1
<xsl:value-of select="/framework/locale/entry[@name='Woord']"/>


Het probleem is nu dat het menu via de XML wordt aangeleverd (mijn framework maakt namelijk automatisch een menu op aan de hand van de gemaakte modules en laat ook zien welke aktief is etc.).

Nu wil ik dus deze aangeleverde menu items in de XSLT vertalen door bijvoorbeeld het volgende te doen:
code:
1
2
3
4
5
6
7
8
9
10
<xsl:for-each select="/framework/menu/entry">
 <xsl:choose>
  <xsl:when test="status = 'active'">
   <li class="active"><a href="{link}"><xsl:value-of select="/framework/locale/entry[@name=title]"/></a></li>
  </xsl:when>
  <xsl:otherwise>
   <li><a href="{link}"><xsl:value-of select="/framework/locale/entry[@name=title]"/></a></li>
  </xsl:otherwise>
 </xsl:choose>
</xsl:for-each>


Helaas werkt dit dus niet en laat het resultaat niets zien op de plaats van title.
Is er een manier dit te omzeilen?

Bij voorbaat dank.

www.dannyhiemstra.nl


  • truegrit
  • Registratie: Augustus 2004
  • Laatst online: 19-11 23:52
moet je er niet ' ' omheen zetten?

hallo


  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
Volgens mij alleen met strings niet met een element uit de XML

www.dannyhiemstra.nl


  • truegrit
  • Registratie: Augustus 2004
  • Laatst online: 19-11 23:52
laat dan even de xml zien, want ik snap niet wat het probleem nou is
hiermee bedoel ik dus de daadwerkelijke XML, een stukje daarvan, niet alles

[ Voor 36% gewijzigd door truegrit op 06-12-2006 17:22 ]

hallo


  • chuxiej
  • Registratie: Februari 2001
  • Laatst online: 13-07-2020
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?xml version="1.0" encoding="ISO-8859-1"?>

<framework>
    <locale>
        <entry name="logout">logout</entry>
        <entry name="control panel">control panel</entry>
        <entry name="Login">Login</entry>
        <entry name="Home">Home</entry>
        <entry name="Users">Users</entry>
    </locale>
    <menu>
        <entry>
            <title>Home</title>
            <link>..</link>
            <status>active</status>
        </entry>
        <entry>
            <title>Users</title>
            <link>..</link>
            <status>inactive</status>
        </entry>
    </menu>
    </content>
    ...
    </content>
</framework>


Hier zit de locale van engels bij dus niet denken waar slaat de vertaling op :)
Normaal zal het dus bv: <entry name="Users">Gebruikers</entry> zijn.

www.dannyhiemstra.nl


  • truegrit
  • Registratie: Augustus 2004
  • Laatst online: 19-11 23:52
Dus als ik het goed begrijp wil je elke /framework/menu/entry/title value gebruiken om de gelokaliseerde waarde uit /framework/locale/entry te halen, waar de title gelijk is aan de name attribuut van elke entry in locale?

(misschien kan je met :text() proberen, dus [@name=link:text()], maar ik ga zo weg dus kan je niet snel verder helpen, en eigenlijk zou ik ook de oplossing niet zo 1 2 3 weten)

hallo

Pagina: 1