xsl-list
[Top] [All Lists]

Replacing values

2004-08-31 02:05:39
Hi,

I am a relative beginner, so forgive what is probably a very easy question but....

I am trying to write a stylesheet that will replace language descriptions with their iso 639 code. I have a doc containing the language codes of the form:

<languages>
<language>
  <name>English</name>
  <iso-code>en</iso-code>
</language>
  ...
  ...
</languages>

the source document contains <language> tags with text that matches the name tag in the language document. Here is my attempt:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
  <xsl:param name="languagesDocFilename"/>
<xsl:variable name="languagesDoc" select="document($languagesDocFilename)" />
    <xsl:template match="language">
      <language>
<xsl:value-of select="$languagesDoc/languages/language[current()=name]"/>
      </language>
  </xsl:template>
    <xsl:template match="@*|node()">
     <xsl:copy>
             <xsl:apply-templates select="@*|node()"/>
     </xsl:copy>
  </xsl:template>   </xsl:stylesheet>

This almost works, but the output contains language tags like this:
...
<language>
de
German
</language>

when what I want is :

<language>
de
</language>

I guess this is because the template that matches on everything is copying the German text, but havent been able to find a way to get it to output only the iso code.

David Sinclair.


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