Re: [xsl] Generating IDs and seperating elements

Subject: Re: [xsl] Generating IDs and seperating elements
From: Jinesh Varia <jineshresearch@xxxxxxxxx>
Date: Wed, 5 Feb 2003 19:53:49 -0800 (PST)
Hello charles

I am sorry there was a typo there.
I forgot to declare the paramenters. thanks for ###2

but with ###3 even if there is call-template
mentioned.. it works fine for one.(generates ids) but
I want to use the same id that has been generated at
other place where there is tempperid. what should I
type over there so that the same id that I am
generating can be used at ####2 

###1 still not known :(


just to give you an overview, I am trying to seperate
authors from the publication data. so that I can
import it in the database as a publication table and
persons table.
Jinesh
--- Charles White <chuck@xxxxxxxxxxx> wrote:
> Hi Jinesh:
> 
> You have a couple things going on here with the
> structure of your XSLT.
> First, you didn't declare your parameters anywhere,
> at least not in the code
> you provided here.
> 
> So, in answer to ######2,  the first part of your
> author template should
> look like this:
> <xsl:template match="author">
> <xsl:param name="temppubid" />
> <xsl:param name="tempperid">
> <xsl:call-template name="generate-author-id"/>
> 
> It seems you were trying to call the template named
> generate-author-id,
> which is defined elsewhere, but you used the
> xsl:template element to attempt
> to do so, so I changed this:
>  <xsl:template name="generate-author-id">
> to this
> <xsl:call-template name="generate-author-id"/>
> in the code above (but not in the originally defined
> template named
> generate-author-id that you built later in the
> stylesheet).
> 
> #####3: You took a sort of object-oriented
> developer's approach to
> concatenation and mistakenly used the plus (+)
> operator in the concat
> function, where as you should use commas instead:
> 
> concat('800000000',$last+$this)
> 
> becomes
> 
> select="concat('800000000',$last, $this)"
> 
> I'm not sure what you are asking about with ####1,
> so I'll let someone else
> take over there. :-)
> 
> Cheers,
> 
> Chuck White
> Author, Mastering XSLT, Sybex Books
> http://www.javertising.com/webtech
> http://www.tumeric.net
> ----- Original Message -----
> From: "Jinesh Varia" <jineshresearch@xxxxxxxxx>
> To: <XSL-List@xxxxxxxxxxxxxxxxxxxxxx>
> Sent: Wednesday, February 05, 2003 5:20 PM
> Subject: [xsl] Generating IDs and seperating
> elements
> 
> 
> > Hello people,
> > 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|editor)"
> > ><!-- this is so that we get unique authors and
> > editors: 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">
> >  <person>
> > <xsl:attribute name="perid">
> >  <xsl:template name="generate-author-id"> <!--
> > generating ids -->
> > </xsl:attribute>
> > <personname>
> > <xsl:value-of select="."/>
> > </personname>
> > </person>
> > <pubper>
> >  <pubid>
> >        <xsl:value-of select="$temppubid"/><!-- Why
> is
> > this not printing the parameter that I am sending
> > #####2 -->
> >   </pubid>
> >    <perid>
> >          <xsl:value-of select="$tempperid"/> <!- I
> > want to print the id that I just created for
> person
> > over here. Why 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, ###2, ###3
> > I dont know why is this not working...any help
> will be
> > appreciated
> >
> > 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
> >
> >
> 
> 
>  XSL-List info and archive: 
> http://www.mulberrytech.com/xsl/xsl-list
> 


=====
-----------------------------------------------------------------
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