Toon posts:

[xml/xsl] Dictionary approach

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ben een beetje aan het klooien met deze methode om internationalization te implementeren, gebruik makend van een xml/xsl combinatie

Nu wil ik alleen een kleine (?) verandering in de generieke xsl-vertaal-template aanmaken, namelijk:

dat dit:

<label id="useridLabel" nlsid="userid"/>

omgetoverd wordt naar:

<label id="useridLabel" nlsid="Username"/>

in plaats van:

<label id="useridLabel" nlsid="userid"/>Username</label>

Heb al een tijdje lopen kloten, maar kom er maar niet uit...

Verwijderd

Topicstarter
ok, heb het opgelost (tenminste, het lijkt te werken...):
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:param name="doc-file"/>
  <xsl:param name="currentLocale"/>

  <xsl:template match="text()|@*"><xsl:value-of select="."/></xsl:template>
  <xsl:template match="*|node()" priority="1">
    <xsl:copy>
      <xsl:copy-of select="@*"/><xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match="/"><xsl:apply-templates/></xsl:template>
  <xsl:template match="*[@label]" priority="5">
    <xsl:element name="{name(.)}">
    <xsl:for-each select="@*">
      <xsl:choose>
          <xsl:when test="name(.)='label'">
            <xsl:variable name="myKey" select="."/>
            <xsl:attribute name="{name(.)}">
              <xsl:choose>
                <xsl:when test="document($doc-file)/locale/*[name()=$myKey]">
                  <xsl:value-of select="document($doc-file)/locale/*[name()=$myKey]/*[name()=$currentLocale]"/>
                </xsl:when>
                <xsl:otherwise>
                  <xsl:value-of select="."/>
                </xsl:otherwise>
              </xsl:choose>
            </xsl:attribute>
          </xsl:when>
        <xsl:otherwise>
            <xsl:attribute name="{name(.)}">
            <xsl:value-of select="."/>
            </xsl:attribute>
        </xsl:otherwise>
        </xsl:choose>
    </xsl:for-each>
    <xsl:apply-templates select="./*"/>
    </xsl:element>    
  </xsl:template>
</xsl:stylesheet>

  • Orphix
  • Registratie: Februari 2000
  • Niet online
ff uit het blote hoofd, ik ben absoluut geen XSLT expert!
code:
1
2
3
4
5
6
<xsl:for-each select="label">
   <xsl:element name="label">
    <xsl:attribute name="id"><xsl:value-of select="@id" /></xsl:attribute>
    <xsl:attribute name="nlsid"><xsl:value-of select="." /></xsl:attribute>
   </xsl:element>
</xsl:for-each>