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[(_at_)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(_at_)psu(_dot_)edu
-----------------------------------------------------------------
'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