It fails saying
XTDE1490: Cannot write more than one result document to the same URI, or
write to a URI
that has been read: file:/c:/MyJava/users/shellenberger/$doi_filename
which is because you have written
<xsl:result-document href="$doi_filename">
when you meant
<xsl:result-document href="{$doi_filename}">
It might not have produced that error under 8.8, but I can't see how it can
have "worked" in any meaningful sense when all the output files were written
to the same location.
When I fix that error it fails looking for cat2.xml and article2.xml which
you didn't supply; when I remove those from index.xml, it seems to run
successfully, producing an output file at
file:/c:/projects/working/Playground/10.99990000000000000.xml
(just as well I didn't have anything valuable at that location!)
Incidentally, this is a case where you need the -t option on the command
line to see where your output files have gone.
Michael Kay
http://www.saxonica.com/
-----Original Message-----
From: Mark Shellenberger [mailto:mshellenberger(_at_)gmail(_dot_)com]
Sent: 10 April 2007 23:10
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Temporary Trees and Parser Upgrades
XSLT Gurus,
I have the following stylesheet that worked when parsing with Saxon
8.8.04 but no longer works with Saxon 8.9. I assume this is
because some aspect of either xsl:variable or document() was
tightened up to the standard and my implementation was
sub-standard. The final goal of this stylesheet is to take
in a single lookup table containing file pairs, combine the
category element values of the category file with the entire
content of the article in the pair. The output would have
the category elements as children of the categories element.
The combined structure would be output with the doi as the filename.
There will be one output file for each pair of input
documents identified in the lookup table.
I imagine that this stylesheet is a wonder of missed
opportunities and strangely used structures. I'd appreciate
any constructive comments you have on it. But, since it
worked in Saxon 8.8 and I now need to use Saxon 8.9, my
major concern is figuring out why it no longer works.
I leave myself to your tender mercies.
--Mark
xslt 2.0 file
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="//PAIR">
<!-- Create variables to hold documents pointed to
from index.xml -->
<xsl:variable name="article" select="document(ARTICLE)"/>
<xsl:variable name="category" select="document(CAT)"/>
<!-- Create temporary tree with entire article and
descendents of the categories element -->
<xsl:variable name="temp">
<xsl:apply-templates
select="$article|$category//categories"/>
</xsl:variable>
<!-- Creates output directories and filenames -->
<xsl:variable name="doi_filename">
<xsl:text>/projects/working/</xsl:text><xsl:value-of
select="//FOLDER"/><xsl:text>/</xsl:text><xsl:value-of
select="substring-before($category//doi, '/')"/>
<xsl:value-of select="substring-after($category//doi,
'/')"/><xsl:text>.xml</xsl:text>
</xsl:variable>
<!-- Output document with doi as filename -->
<xsl:result-document href="$doi_filename">
<xsl:apply-templates select="$temp"/>
</xsl:result-document>
</xsl:template>
<!-- output category elements as children of
article-meta/categories element -->
<xsl:template match="//article-meta//categories">
<xsl:copy>
<xsl:apply-templates
select="//article-meta/following-sibling::categories//category"/>
</xsl:copy>
</xsl:template>
<!-- Drop all category elements -->
<xsl:template match="/categories"/>
<!-- Identity Transform -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Index.xml
<INDEX>
<WORKFOLDER>C:</WORKFOLDER>
<FOLDER>Playground</FOLDER>
<PAIRS>
<PAIR>
<ARTICLE>article1.xml</ARTICLE>
<CAT>cat1.xml</CAT>
</PAIR>
<PAIR>
<ARTICLE>article2.xml</ARTICLE>
<CAT>cat2.xml</CAT>
</PAIR>
</PAIRS>
</INDEX>
Cat1.xml:
<article-category>
<doi>10.9999/0000000000000</doi>
<categories>
<category>Jungle Gyms</category>
<category>Swing Sets</category>
<category>Monkey Bars</category>
<category>Slides</category>
</categories>
</article-category>
Article1.xml
<root doi="10.9999/0000000000000" type="journal">
<header>
<journal-meta>
<title>Journal of Playgrounds</title>
<ISSN>0000-000x</ISSN>
<volume>1</volume>
<issue>4</issue>
<date>
<year>2003</year>
<month>June</month>
</date>
<publication>
<name>Me Enterprises</name>
<location>Springfield, Simpson State</location>
</publication>
</journal-meta>
<article-meta>
<title>Playground Equipment</title>
<subtitle>Alternative Methods and Conclusions</subtitle>
<author>
<person>
<firstname>Bob</firstname>
<middle>J.</middle>
<surname>Smith</surname>
<aff>University of Pennsylvania</aff>
</person>
</author>
<startpage>98</startpage>
<finishpage>119</finishpage>
<categories/>
</article-meta>
</header>
<body> </body>
<references> </references>
</root>
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--