Subject: RE: [xsl] Temporary Trees and Parser Upgrades From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Wed, 11 Apr 2007 00:37:56 +0100 |
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@xxxxxxxxx] > Sent: 10 April 2007 23:10 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > 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>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Temporary Trees and Parser Up, Mark Shellenberger | Thread | Re: [xsl] Temporary Trees and Parse, David Carlisle |
[xsl] Temporary Trees and Parser Up, Mark Shellenberger | Date | Re: [xsl] Temporary Trees and Parse, David Carlisle |
Month |