xsl-list
[Top] [All Lists]

single document write

2005-06-29 13:14:33
Hello,

I've searched the archives for an answer to this problem, so I apologize for any repeat posting.

I have a large XML file composed of multiple <article> element trees. I am attempting to use XSLT to transform this large XML file into a tab-delimited file format suitable for uploading into an Open Source database. Each <article> contains some one-to-many relationships which I am trying to capture in separate files for uploading into a corresponding table. One of these is an <AuthorList>.

Right now, the stylesheet template transforms and outputs a single file for each author using the result-document directive, but what I would like to do is just write to a single author file every time the stylesheet template processes a single author. Is this possible?

I am using saxon (saxon8.jar) for the processing ...

For example, XML for an <AuthorList> inside the <article> tag:

<article>
...
...
<AuthorList CompleteYN="Y">
<Author ValidYN="Y">
<LastName>Di Venere</LastName>
<ForeName>A</ForeName>
<Initials>A</Initials>
</Author>
<Author ValidYN="Y">
<LastName>Rossi</LastName>
<ForeName>A</ForeName>
<Initials>A</Initials>
</Author>
<Author ValidYN="Y">
<LastName>De Matteis</LastName>
<ForeName>F</ForeName>
<Initials>F</Initials>
</Author>
<Author ValidYN="Y">
<LastName>Rosato</LastName>
<ForeName>N</ForeName>
<Initials>N</Initials>
</Author>
<Author ValidYN="Y">
<LastName>Agr</LastName>
<ForeName>A F</ForeName>
<Initials>AF</Initials>
</Author>
<Author ValidYN="Y">
<LastName>Mei</LastName>
<ForeName>G</ForeName>
<Initials>G</Initials>
</Author>
</AuthorList>
...
...
</article>

XSL template for the <AuthorList>:

<xsl:template name="authorlist">
            <xsl:param name="pmid"/>
            <xsl:if test="Article/AuthorList/Author">
<!-- write author data to author/pmid output file --> <!-- tab delimited --> <!-- fields: pmid valid(y/n) name_last name_first initials --> <!-- unique identifier: pmid value -->
            <xsl:result-document href="author/mal_{$pmid}.pgsql">
              <xsl:for-each select="Article/AuthorList/Author">
<xsl:value-of select="$pmid"/><xsl:value-of select="$tab"/><xsl:value-of select="normalize-space(@ValidYN)" /><xsl:value-of select="$tab"/><xsl:value-of select="normalize-space(LastName)"/><xsl:value-of select="$tab"/><xsl:value-of select="normalize-space(ForeName)"/><xsl:value-of select="$tab"/><xsl:value-of select="normalize-space(Initials)"/><xsl:va
lue-of select="$newline"/>
                </xsl:for-each>
            </xsl:result-document>
            </xsl:if>
</xsl:template>

Thanks in advance,

Best,

Gerry


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>