Details
-
Bug
-
Status: Reopened
-
Major
-
Resolution: Unresolved
-
2.7.1
-
None
-
Security Level: No security risk; visible to anyone (Ordinary problems in Xalan projects. Anybody can view the issue.)
-
None
-
Operating System: Other
Platform: Other
Description
In our project we need to access non-main XML file in order to retrieve
localized strings that will later appear in resulting HTMLs. If we use XSLTC
as our processor it is impossible.
Example. The same example works fine in interpretive Xalan. But fails on Xalan-
XSLTC.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:xalan="http://xml.apache.org/xalan">
<xsl:output method="html"/>
<xsl:variable name="stringTable" select="document('foo.xml')"/>
<!-- Look up the parameter key in the localized string table (loaded in
the variable stringTable
based on the passed in parameter stringTableFileName). If the key
cannot be found then the
returned string will be !<key>!.
Parameters:
key - the look up key matched to the key attribute of string elements
in the lookup table
-->
<!-- Perhaps not the fastest approach but it is compatible with both XSLTC
and interpretive Xalan -->
<xsl:template name="getLocalizedString">
<xsl:param name="key"/>
<xsl:value-of select="$key"/>
<xsl:variable name="lookupString" select="$stringTable/strings/string
[@key=$key]"/>
<xsl:choose>
<xsl:when test="$lookupString != ''">
<xsl:value-of select="$lookupString"/>
</xsl:when>
<xsl:otherwise>
<xsl:element name="a">
<xsl:attribute name="name">MISSING_L10N_KEY</xsl:attribute>
<xsl:text>!!</xsl:text>
<xsl:value-of select="$key"/>
<xsl:text>!!</xsl:text>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Example of XML file
<?xml version="1.0" encoding="UTF-8" ?>
<strings>
<string key="Description.Foo">Here goes description of foo</string>
</strings>