[Home] [By Thread] [By Date] [Recent Entries]

  • From: Daniel Barclay <Daniel.Barclay@d...>
  • To: José Manuel Beas <jmbeas@t...>
  • Date: Tue, 31 Oct 2000 15:17:49 -0500

José Manuel Beas wrote:
> 
> I have a XML file with a parameter definition zone.
> 
> <parameters>
>   <param ident="param1">
>   <param ident="param2">
> </parameters>
> 
> And i want to apply a XSLT file to this XML file
> 
> XSLT File
> 
>         <xsl:template match="parameters">
>                 <xsl:for-each select="param">
>                         <xsl:param name="@ident"/>
>                 </xsl:for-each>
>         </xsl:template>
> 
> But when XSLT-parser(SAXON) processes it, shows this error:
> 
>         "Name @ident contains invalid characters"
> 
> How should i solve this problem??

The name attribute of xsl:param must be a QName (see
http://www.w3.org/TR/xslt#element-param ); specifically, the 
parameter name must be given literally in the XSLT source, and can't 
be specified with an expression.

I'm pretty sure there's no way to define XSLT parameters or variables 
whose names are defined in the XML source document (the file being 
transformed).

If you're going to provide parameter values in an XML file, you can 
probably create one XSLT parameter or variable whose value is a nodeset 
that is the content (children) of the "parameters" element (something 
like <xsl:variable name="params" select=".../param" />), and then can 
extract specific values with something like $var[@ident="param1"].

If you really want to map your given XML to XSLT parameters, I think
you'd have to transform the given XML into an XSLT stylesheet with
a second XSLT stylesheet.


Daniel
-- 
Daniel Barclay
Digital Focus
Daniel.Barclay@d...

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member