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 |