Subject: Re: [xsl] How to incrementally add to a result document? From: "Dimitre Novatchev dnovatchev@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Fri, 28 Jun 2024 22:39:00 -0000 |
I would represent the log as a global map variable and place any action there as an entry like {action-key, action-info}, immediately on completing each action. Finally, when the processing is finished, we can produce from the log-map a single result-document that contains all entries of the log-map. Thanks, Dimitre On Fri, Jun 28, 2024 at 2:38b/PM Roger L Costello costello@xxxxxxxxx < xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > Hi Folks, > > I have an XSLT program that converts an old form to a new form. My XSLT > program has a template rule that converts this old form: > > <Airport_Name>Boston Logan Airport</Airport_Name> > > to this new form: > > <name>Boston Logan Airport</name> > > My XSLT program has a template rule that converts this old form: > > <Airport_Elevation>19</Airport_Elevation> > > to this new form: > > <elevation>19</elevation> > > I want the template rules to also output -- to another, different file -- > metadata that shows what actions were taken. Here is the template rule for > Airport_Name: > ----------------------------------------------------------- > <xsl:template match="Airport_Name"> > <name> > <xsl:value-of select="normalize-space(.)"/> > </name> > <!-- output metadata showing the actions taken --> > <xsl:result-document href="metadata.xml" format="XML-format"> > <mapping> > <legacy-elmt-name> > <xsl:value-of select="name()"/> > </legacy-elmt-name> > <legacy-elmt-value> > <xsl:value-of select="."/> > </legacy-elmt-value> > <new-elmt-name> > <xsl:text>name</xsl:text> > </new-elmt-name> > <new-elmt-value> > <xsl:value-of select="normalize-space(.)"/> > </new-elmt-value> > </mapping> > </xsl:result-document> > </xsl:template> > ----------------------------------------------------------- > Here is the template rule for Airport_Elevation: > ----------------------------------------------------------- > <xsl:template match="Airport_Elevation"> > <elevation> > <xsl:if test=". castable as xs:integer"> > <xsl:value-of select="xs:integer(.)"/> > </xsl:if> > </elevation> > <!-- output metadata showing the actions taken --> > <xsl:result-document href="metadata.xml" format="XML-format"> > <mapping> > <legacy-elmt-name> > <xsl:value-of select="name()"/> > </legacy-elmt-name> > <legacy-elmt-value> > <xsl:value-of select="."/> > </legacy-elmt-value> > <new-elmt-name> > <xsl:text>elevation</xsl:text> > </new-elmt-name> > <new-elmt-value> > <xsl:if test=". castable as xs:integer"> > <xsl:value-of select="xs:integer(.)"/> > </xsl:if> > </new-elmt-value> > </mapping> > </xsl:result-document> > </xsl:template> > ----------------------------------------------------------- > Here is how the template rules are activated: > > <airport> > <xsl:apply-templates select="Airport_Name"/> > <xsl:apply-templates select="Airport_Elevation"/> > </airport> > > When I run my XSLT program I get this error message: > > Error in xsl:result-document/@href > XTDE1490 Cannot write more than one result document to the same URI > > The error message is telling me that I cannot write to the metadata.xml > file in an incremental fashion, right? > > What to do? > > Is there anyway that I can achieve what I desire -- output to one document > the result of mapping the old form to the new form and output to another > document metadata that describes the mapping steps that were taken? Or is > this outside the realm of XSLT's capabilities? > > /Roger
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] How to incrementally add , Paul Tyson phtyson@x | Thread | Re: [xsl] How to incrementally add , Dimitre Novatchev dn |
Re: [xsl] How to incrementally add , Wendell Piez wapiez@ | Date | Re: [xsl] How to incrementally add , Dimitre Novatchev dn |
Month |