Subject: [xsl] generating id by calling template but how to use it at other places From: Jinesh Varia <jineshresearch@xxxxxxxxx> Date: Wed, 5 Feb 2003 20:14:33 -0800 (PST) |
Hello people, Please ignore the previous email this email contains proper question without any typos two unique problems: My XML is <publication pubid="0002"> <author>steve lawer</author> ........ <publication> I want my new XML as: <publication pubid="0002"> ........ </publication> <person perid="100000004"> <!-- new id generation --> <personname>steve lawer</personname> </person> <pubper> <!-- publication-person intersection --> <pubid>0002</pubid> <perid>100000004</perid> </pubper> My XSL is: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:template match="publication"> <publication> <xsl:copy-of select="@*|*[not(self::author or self::editor)]"/> <!-- this is just to cut the authors element--> </publication> <xsl:if test="author=not(.=preceding::author)" ><!-- this is so that we get unique author names: Please comment on this #####1--> <xsl:apply-templates select="author"> <xsl:with-param name="temppubid" select="@pubid" /> </xsl:apply-templates> </xsl:if> </xsl:template> <xsl:template match="author"> <xsl:param name="temppubid" /> <person> <xsl:attribute name="perid"> <xsl:call-template name="generate-author-id"> <!-- generating ids ####2--> </xsl:attribute> <personname> <xsl:value-of select="."/> </personname> </person> <pubper> <pubid> <xsl:value-of select="$temppubid"/> </pubid> <perid> <xsl:value-of select="???????????"/> <!- I want to print the id at #####2 that I just created for person element over here. What should I use is this not printing....how to print the value. ####3--> </perid> <persontype>1</persontype> </pubper> </xsl:template> <xsl:template name="generate-author-id"> <xsl:variable name="last" select="number(preceding::author[@perid][1]/@perid)"/> <xsl:variable name="this" select="count(preceding::author[not(@perid)])+1"/> <xsl:variable name="temp" select="concat('800000000',$last+$this)" /> <xsl:value-of select="substring($temp,string-length($temp)-9)" /> <!-- we just want 10-digit IDs --> <xsl:template> </xsl:stylesheet> Please comment on ###1, ###3 I want to know what select statement should I use? I thought using a <xsl:variable name="tempperid"> <xsl:call-template name="generate-author-id" /> </xsl:variable> and use $tempperid everywhere. But this does not work since the XSL is a decraraltive language and the value of the variable remains the same. Thanks in advance jinx ===== ----------------------------------------------------------------- Jinesh Varia Graduate Student, Information Systems Pennsylvania State University Email: jinesh@xxxxxxx ----------------------------------------------------------------- 'Self is the author of its actions.' __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Are variables allowed in , XSLList | Thread | RE: [xsl] generating id by calling , Roger Glover |
Re: [xsl] Generating IDs and sepera, Jinesh Varia | Date | Re: [xsl] Generating IDs and sepera, Charles White |
Month |