Saturday 30 July 2011

XSLT I18N

  
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="directory_es.xslt"?>
<directory>
  <employee category="manager">
    <name>Joe S</name>
    <phone>4-1111</phone>
  </employee>
  <employee category="programmer">
    <name>A B</name>
    <phone>4-2222</phone>
  </employee>
  <employee category="programmer">
    <name>C D</name>
    <phone>4-3333</phone>
  </employee>
</directory>


//directory_en.xslt


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" encoding="UTF-8"/>
  
  <!-- Isolate locale-specific content -->
  <xsl:variable name="lang.pageTitle" select="'Employee Directory'"/>
  <xsl:variable name="lang.nameHeading" select="'Name'"/>
  <xsl:variable name="lang.categoryHeading" select="'Category'"/>
  <xsl:variable name="lang.phoneHeading" select="'Phone'"/>
  <xsl:variable name="lang.manager" select="'Manager'"/>
  <xsl:variable name="lang.programmer" select="'Programmer'"/>
  <xsl:variable name="lang.other" select="'Other'"/>
  
  <xsl:template match="/">
    <html>
      <head>
        <title><xsl:value-of select="$lang.pageTitle"/></title>
      </head>
      <body>
        <h1><xsl:value-of select="$lang.pageTitle"/></h1>
        <table cellpadding="4" cellspacing="0" border="1">
          <tr>
            <th><xsl:value-of select="$lang.nameHeading"/></th>
            <th><xsl:value-of select="$lang.categoryHeading"/></th>
            <th><xsl:value-of select="$lang.phoneHeading"/></th>
          </tr>
          <xsl:for-each select="directory/employee">
            <tr>
              <td>
                <xsl:value-of select="name"/>
              </td>
              <td>
                <xsl:choose>
                  <xsl:when test="@category='manager'">
                    <xsl:value-of select="$lang.manager"/>
                  </xsl:when>
                  <xsl:when test="@category='programmer'">
                    <xsl:value-of select="$lang.programmer"/>
                  </xsl:when>
                  <xsl:otherwise>
                    <xsl:value-of select="$lang.other"/>
                  </xsl:otherwise>
                </xsl:choose>
              </td>
              <td>
                <xsl:value-of select="phone"/>
              </td>
            </tr>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

//directory_basic.xslt

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" encoding="UTF-8"/>
  <xsl:template match="/">
    <html>
      <head>
        <title>Employee Directory</title>
      </head>
      <body>
        <h1>Employee Directory</h1>
        <table cellpadding="4" cellspacing="0" border="1">
          <tr>
            <th>Name</th>
            <th>Category</th>
            <th>Phone</th>
          </tr>
          <xsl:for-each select="directory/employee">
            <tr>
              <td>
                <xsl:value-of select="name"/>
              </td>
              <td>
                <xsl:choose>
                  <xsl:when test="@category='manager'">
                    <xsl:text>Manager</xsl:text>
                  </xsl:when>
                  <xsl:when test="@category='programmer'">
                    <xsl:text>Programmer</xsl:text>
                  </xsl:when>
                  <xsl:otherwise>
                    <xsl:text>Other</xsl:text>
                  </xsl:otherwise>
                </xsl:choose>
              </td>
              <td>
                <xsl:value-of select="phone"/>
              </td>
            </tr>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>


//directory_es.xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:import href="directory_en.xslt"/>
  <xsl:output method="html" encoding="UTF-8"/>
  
  <!-- Isolate locale-specific content -->
  <xsl:variable name="lang.pageTitle" select="'Empleado guia telefonica'"/>
  <xsl:variable name="lang.nameHeading" select="'Nombre'"/>
  <xsl:variable name="lang.categoryHeading" select="'Categoria'"/>
  <xsl:variable name="lang.phoneHeading" select="'Telefono'"/>
  <xsl:variable name="lang.manager" select="'Gerente'"/>
  <xsl:variable name="lang.programmer" select="'Programador'"/>
  <xsl:variable name="lang.other" select="'Otro'"/>
  
</xsl:stylesheet>

           
         
    
  

No comments:

Post a Comment