|
Subject: RE: [xsl] key from one file to another set of files From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 10 Dec 2008 12:00:21 -0000 |
The key() function searches the document containing the context node, unless
you supply a third argument, in which case it searches the document (or
subtree) identified in the third argument. You want
<xsl:template match="/" name="main">
<xsl:variable name="index" select="."/>
... then ...
<xsl:if test="key('order', '$a/article/item-info/aid', $index)">
Except that you don't only want to test whether the article exists, you want
to find the right row, and use it when you do
<page>
<xsl:value-of select="document('input.xml')/articles/row/col[3]"/>
</page>
because that is otherwise going to give you the third column of every row.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Ganesh Babu N [mailto:nbabuganesh@xxxxxxxxx]
> Sent: 10 December 2008 11:48
> To: XSL
> Subject: [xsl] key from one file to another set of files
>
> Dear All,
>
> input.xml
>
> <articles>
> <row>
> <col>4039</col>
> <col>Review Articles</col>
> <col>1</col>
> </row>
> <row>
> <col>3957</col>
> <col>Review Articles</col>
> <col>9</col>
> </row>
> <row>
> <col>3986</col>
> <col>Papers</col>
> <col>22</col>
> </row>
> <row>
> <col>3985</col>
> <col>Papers</col>
> <col>29</col>
> </row>
> </articles>
>
> x number of article.xml files with content:
>
> 1.xml
>
> <article>
> <aid>4039</aid>
> <author>nnn</author>
> <title>xxxxx<title>
> </article>
>
> 2.xml
>
> <article>
> <aid>3957</aid>
> <author>nnn</author>
> <title>xxxxx<title>
> </article>
>
> 3.xml
>
> <article>
> <aid>3986</aid>
> <author>nnn</author>
> <title>xxxxx<title>
> </article>
>
> 4.xml
>
> <article>
> <aid>3985</aid>
> <author>nnn</author>
> <title>xxxxx<title>
> </article>
>
> Required output:
>
> <cover-body>
> <section>
> <section-title>Review Articles</section-title>
> <para><aid>4039</aid> <author>nnn</author>
> <title>xxxxx<title> <page>1</page></para>
> <para><aid>3957</aid> <author>nnn</author>
> <title>xxxxx<title> <page>9</page></para> </section>
> <section> <section-title>Papers</sectitle>
> <para><aid>3986</aid> <author>nnn</author>
> <title>xxxxx<title> <page>1</page></para>
> <para><aid>3985</aid> <author>nnn</author>
> <title>xxxxx<title> <page>9</page></para> </section> <cover-body>
>
> XSL:
> <xsl:template match="/" name="main">
> <cover-body>
> <xsl:for-each
> select="collection('file:///D:/cover/sample
> xmls/pageall/else/nima?select=*.xml;recurse=yes;on-error=ignore')">
> <xsl:variable name="a" select="."/>
> <xsl:if test="key('order',
> '$a/article/item-info/aid')">
> <xsl:if
> test="(document('input.xml')/articles/row/col[2])[1]">
> <section>
> <section-title><xsl:value-of
> select="."/></section-title>
> <para>
> <aid>
> <xsl:value-of
> select="$a/article/item-info/aid"/>
> </aid>
> <aug>
>
> <xsl:apply-templates
> select="$a/article/head/ce:author-group/ce:author"/>
> </aug>
> <article>
> <xsl:value-of
> select="$a/article/head/ce:title"/>
> </article>
> <page>
> <xsl:value-of
> select="document('input.xml')/articles/row/col[3]"/>
> </page>
> </para>
> </section>
> </xsl:if>
> </xsl:if>
> </xsl:for-each>
> </cover-body>
> </xsl:template>
>
> The key is not working for me. i have tried adding the
> document() in the match but it is showing the error.
>
> Regards,
> Ganesh
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] key from one file to another , Ganesh Babu N | Thread | Re: [xsl] key from one file to anot, Ganesh Babu N |
| [xsl] Generating ID key values, Trevor Nicholls | Date | Re: [xsl] XSL String Mapping Proble, G. Ken Holman |
| Month |