この変換:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="my:my" exclude-result-prefixes="my">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pUrl" select="'www.mysite/es/home.htm '"/>
<my:headings>
<h lang="en">
<description>Description</description>
<gameType>Game Type</gameType>
</h>
<h lang="es">
<description>Descripción</description>
<gameType>Tipo De Juego</gameType>
</h>
</my:headings>
<xsl:variable name="vHeadings" select="document('')/*/my:headings/*"/>
<xsl:template match="/">
<xsl:variable name="vLang" select=
"substring-before(substring-after($pUrl, '/'), '/')"/>
<table>
<thead>
<td><xsl:value-of select="$vHeadings[@lang=$vLang]/description"/></td>
<td><xsl:value-of select="$vHeadings[@lang=$vLang]/gameType"/></td>
</thead>
</table>
</xsl:template>
</xsl:stylesheet>
任意の XML ドキュメント (使用されていない) に適用すると、必要な見出しが生成されます。
<table>
<thead>
<td>Descripción</td>
<td>Tipo De Juego</td>
</thead>
</table>
注: 実際のアプリでは、言語固有のデータを別の XML ファイル (またはファイル - 言語ごとに 1 つ) に入れたい場合があります。そのような場合は、への呼び出しを少し変更するだけで済みます。document()
このコードで機能します。
更新:
OP はコメントで、document()
彼の環境では の使用が禁止されていることを示しています。
を使用せずに動作するようにわずかに変更した同じソリューションを次に示しますdocument()
。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ext="http://exslt.org/common" exclude-result-prefixes="ext">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pUrl" select="'www.mysite/es/home.htm '"/>
<xsl:variable name="vrtfHeadings">
<h lang="en">
<description>Description</description>
<gameType>Game Type</gameType>
</h>
<h lang="es">
<description>Descripción</description>
<gameType>Tipo De Juego</gameType>
</h>
</xsl:variable>
<xsl:variable name="vHeadings" select="ext:node-set($vrtfHeadings)/*"/>
<xsl:template match="/">
<xsl:variable name="vLang" select=
"substring-before(substring-after($pUrl, '/'), '/')"/>
<table>
<thead>
<td><xsl:value-of select="$vHeadings[@lang=$vLang]/description"/></td>
<td><xsl:value-of select="$vHeadings[@lang=$vLang]/gameType"/></td>
</thead>
</table>
</xsl:template>
</xsl:stylesheet>