Issue Details (XML | Word | Printable)

Key: XALANJ-1928
Type: Bug Bug
Status: Reopened Reopened
Priority: Major Major
Assignee: Unassigned
Reporter: Barys Dubauski
Votes: 1
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
XalanJ2

XSLTC fails to access auxilliary (non-main) xml file.

Created: 20/Aug/04 04:42 AM   Updated: 10/Aug/05 03:40 PM
Return to search
Component/s: XSLTC
Affects Version/s: 2.7.1
Fix Version/s: None
Security Level: No security risk; visible to anyone (Ordinary problems in Xalan projects. Anybody can view the issue.)

Time Tracking:
Not Specified

File Attachments:
  Size
Zip Archive Licensed for inclusion in ASF works test.zip 2005-02-11 01:33 AM David Green 1 kB
Environment:
Operating System: Other
Platform: Other


 Description  « Hide
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>

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Barys Dubauski added a comment - 20/Aug/04 04:50 AM
Please disregard the comments in the examples I put in the description. They
are old and not true.

Henry Zongaro added a comment - 24/Aug/04 01:23 AM
I added the following template to your example stylesheet to make it complete.
When I did so, the example worked with both Xalan-J Interpretive and XSLTC.

    <xsl:template match="/">
      <xsl:call-template name="getLocalizedString">
        <xsl:with-param name="key" select="'Description.Foo'"/>
      </xsl:call-template>
    </xsl:template>

May I ask you to provide a complete example that demonstrates the problem you
are encountering, along with specific details about the failure that you see
with XSLTC?

Henry Zongaro added a comment - 04/Oct/04 04:04 PM
I was unable to reproduce this problem given the information provided. If you are still able to reproduce it, please reopen the bug report, attaching a complete sample stylesheet and complete sample input.

Henry Zongaro added a comment - 11/Feb/05 12:53 AM
Based on the test case David Green attached to the original Bugzilla bug report, this might be a duplicate of XALANJ-1348.

David Green added a comment - 11/Feb/05 01:33 AM
 A test case with two XML documents, an XSL stylesheet and an Ant build script to run the test case.

David Green added a comment - 11/Feb/05 01:34 AM
This case reproduces the problem: ( I accidentally posted this against XALANJ-1348 as well)

!DOCUMENT1 (foo.xml)
<?xml version="1.0" encoding="UTF-8"?>
<foo>
  <a>foo</a>
</foo>

!DOCUMENT2 (bar.xml)
<?xml version="1.0" encoding="UTF-8"?>
<bar>
  <b>bar</b>
</bar>

!XSLT Stylesheet
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

   <xsl:variable name="BAR" select="document('bar.xml',/)"/>

   <xsl:template match="/">
     <xsl:message>
        Foo root element name: <xsl:value-of select="local-name(/*)"/>
     </xsl:message>
     <xsl:for-each select="$BAR/bar/b">
     <xsl:message>
        Bar root element name: <xsl:value-of select="local-name(/*)"/>
     </xsl:message>
     </xsl:for-each>
   </xsl:template>
</xsl:stylesheet>

The output of running the test (from Ant) is as follows:

foobar-test:
     [echo]
     [echo] USING XSLTC PROCESSOR
     [echo]

     [java] Foo root element name: foo

     [java] Bar root element name: foo

     [java] <?xml version="1.0" encoding="UTF-8"?>
     [echo]
     [echo] USING INTERPRETIVE PROCESSOR
     [echo]
     [java] file:///C:/dev/BCCampus/connector/server-system/codegen/foobar.xslt;
Line #8; Column #19;
     [java] Foo root element name: foo
     [java] file:///C:/dev/BCCampus/connector/server-system/codegen/foobar.xslt;
Line #12; Column #19;
     [java] Bar root element name: bar

     [java] <?xml version="1.0" encoding="UTF-8"?>

Santiago Pericas-Geertsen added a comment - 11/Feb/05 03:15 AM
I have verified that the problem still exists with the current CVS. Henry: Do you want to take this one?

Henry Zongaro added a comment - 01/Mar/05 06:41 AM
Priority was lost in move from Bugzilla.