This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: Passing Variable into an external xml document template
- To: xsl-list at mulberrytech dot com
- Subject: Re: Passing Variable into an external xml document template
- From: Gary L Peskin <garyp at firstech dot com>
- Date: Wed, 16 Aug 2000 14:24:54 -0700
- Organization: The Firstech Corporation
- References: <F252QptgFrYILoygXLs00002430@hotmail.com>
- Reply-To: xsl-list at mulberrytech dot com
Sia --
document('Menus.xml') in your apply-templates returns the root node of
the Menus.xml document. This is then used for the apply-templates.
Since you do not have a rule matching the root node, the built-in root
node rule is used. This invokes apply-templates for each child of the
root. In this case, that's the MenuTreeList template. However, since
this is invoked from the built-in rule, no parameters are passed.
Change your select to document('Menus.xml')/MenuTreeList and everything
should work as you want.
Also, you'll need a closing quote after theMenu in:
<xsl:with-param name="theMenu select="MenuName"/>
HTH,
Gary
Sia Rahimi wrote:
>
> Hi,
>
> Known:
> (1) How to pass parameters to a template
> (2) How to use an an external xml file
>
> Problem:
> Within the template of an external xml file,
> I want to process based on the parameter Passed in.
>
> XML main:
> <MenuDisplay>
> <MenuName>Main</MenuName>
> </MenuDisplay>
>
> XML external (Menus.xml):
> <MenuTreeList>
> <MenuTree name="Login">
> <MenuItem>
> <Text>Please Login</Text>
> </MenuItem>
> </MenuTree>
> <MenuTree name="Main">
> <MenuItem>
> <Text>System News</Text>
> </MenuItem>
> <MenuItem>
> <Text>Customer Menu</Text>
> </MenuItem>
> </MenuTree>
> </MenuTreeList>
>
> XSL:
> <xsl:stylesheet
> version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:template match="MenuDisplay">
> <xsl:apply-templates select="document('Menus.xml')">
> <xsl:with-param name="theMenu select="MenuName"/>
> </xsl:apply-templates>
> </xsl:template>
> <xsl:template match="MenuTreeList">
> <xsl:param name="theMenu"/>
> <xsl:apply-templates select="MenuTree[@name=$theMenu]"/>
> </xsl:template>
> </xsl:stylesheet>
>
> It seems that the parameter theMenu is not set.
>
> Thanks to Jeni's site I have come this far, but, although
> the current problem seems like another problem answered by Jeni
> "Re:Loading an external file of index" it does not seem to
> work for me. (using xalan).
>
> Thanks for any help you may be able to provide.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list