Subject: Re: [xsl] key from one file to another set of files From: "Ganesh Babu N" <nbabuganesh@xxxxxxxxx> Date: Fri, 12 Dec 2008 15:48:42 +0530 |
Can somebody help me in solving this problem. Please Regards, Ganesh On Thu, Dec 11, 2008 at 5:24 PM, Ganesh Babu N <nbabuganesh@xxxxxxxxx> wrote: > 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@xxxxxxxxxxxx> 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@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 -> |
---|---|---|
Re: [xsl] key from one file to anot, Ganesh Babu N | Thread | [xsl] Generating ID key values, Trevor Nicholls |
[xsl] Multi condition sum, peter verhaar | Date | [xsl] Multi condition sum [Correcti, peter verhaar |
Month |