Yes mike you are correct. I am getting all the col[3] values in a single go.
But I am not getting the result. I have tried in different manner in
which i can able to fetch info from collection() files and which are
matching with col[1] value in the input but I am unable to get col[3]
and col[2] values which is matching with col[1].
Please guide. Here is my latest XSL:
<xsl:key name="order" match="/issues/articles/row/col[3]"
use="/issues/articles/row/col[1]"/>
<xsl:template match="/" name="main">
<xsl:variable name="index" select="."/>
<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="$a/article/item-info/aid =
document('input.xml')/issue/articles/row/col[1]">
<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"/>
<xsl:apply-templates
select="$a/article/head/ce:author-group/ce:collaboration"/></aug>
<article><xsl:value-of select="$a/article/head/ce:title"/></article>
<page><xsl:value-of
select="key('order',$a/article/item-info/aid,$index)"/></page>
</para>
</xsl:if>
</xsl:for-each>
</cover-body>
</xsl:template>
Regards,
Ganesh
On Wed, Dec 10, 2008 at 5:30 PM, Michael Kay <mike(_at_)saxonica(_dot_)com>
wrote:
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(_at_)gmail(_dot_)com]
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
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--