This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Passing Variable into an external xml document template


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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]