Re: [xsl] Passing a list of arguments

Subject: Re: [xsl] Passing a list of arguments
From: "Mathieu Malaterre" <mathieu.malaterre@xxxxxxxxx>
Date: Fri, 9 Nov 2007 14:27:14 +0100
On Nov 9, 2007 2:16 PM, Mukul Gandhi <gandhi.mukul@xxxxxxxxx> wrote:
>
> On 11/9/07, Mathieu Malaterre <mathieu.malaterre@xxxxxxxxx> wrote:
> > test.xml:
> > <?xml version="1.0" encoding="UTF-8"?>
> > <article>
> > </article>
> >
> > test.xsl:
> > <?xml version="1.0" encoding="UTF-8"?>
> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="2.0">
> >  <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
> >  <xsl:variable name="sections-list">
> >    <section>
> >      <section>C.8.7.1.1.2</section>
> >      <section>C.8.14.1.1</section>
> >      <!-- ... -->
> >    </section>
> >  </xsl:variable>
> >  <xsl:template match="article">
> >    <xsl:param name="extract-section"/>
> >    <xsl:message>
> >      <xsl:value-of select="$extract-section"/>
> >    </xsl:message>
> >  </xsl:template>
> >  <xsl:template match="/">
> >    <xsl:for-each select="$sections-list">
> >      <xsl:apply-templates select="article">
> >        <xsl:with-param name="extract-section" select="$section"/>
> >      </xsl:apply-templates>
> >    </xsl:for-each>
> >  </xsl:template>
> > </xsl:stylesheet>
>
> You seem to be missing something.
>
> I think, the root template should be:
>
>  <xsl:template match="/">
>    <xsl:for-each select="$sections-list/section/section">
>      <xsl:apply-templates select="article">
>        <xsl:with-param name="extract-section" select="."/>
>      </xsl:apply-templates>
>    </xsl:for-each>
>  </xsl:template>
>
> It's not clear to me what exactly is your requirement. But you seem to
> be writing a wrong XPath expression.


Nevermind, here is something working:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="2.0">
  <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
  <xsl:variable name="sections-list">
    <section>C.8.7.1.1.2</section>
    <section>C.8.14.1.1</section>
  </xsl:variable>
  <xsl:template name="article">
    <xsl:param name="extract-section"/>
    <el>
      <xsl:value-of select="$extract-section"/>
    </el>
  </xsl:template>
  <xsl:template match="/">
    <e>
      <xsl:for-each select="$sections-list/section">
        <xsl:variable name="arg">
          <xsl:value-of select="."/>
        </xsl:variable>
        <xsl:call-template name="article">
          <xsl:with-param name="extract-section" select="$arg"/>
        </xsl:call-template>
      </xsl:for-each>
    </e>
  </xsl:template>
</xsl:stylesheet>

Thanks anyway,
-- 
Mathieu

Current Thread