xsl-list
[Top] [All Lists]

Re: [xsl] output the result of the transformation twice, indented and not indented, without duplicating the code

2022-05-23 13:49:45

On 23.05.2022 20:39, Wolfhart Totschnig 
wolfhart(_dot_)totschnig(_at_)mail(_dot_)udp(_dot_)cl
wrote:
Dear list,

I have an XSL stylesheet that produces a large XML document. I would
like to output the XML document twice, once indented (for human
readability) and once not indented (for faster access by other
scripts). I am wondering whether this can be done from within a single
stylesheet.

In order to achieve what I want, I could, of course, produce two
versions of the stylesheet, one with <xsl:output indent="yes"/> and
the other with <xsl:output indent="no"/>, and then run them
consecutively. The disadvantage of doing that would be that, if I
later want to change the stylesheet, I would have to make the changes
twice, which, apart from the additional effort, would be a possible
source of errors.

I guess that I could achieve what I want from within a single
stylesheet with <xsl:result-document>. But in that case, if I
understand correctly, I would have to copy the entire code of the
stylesheet into <xsl:result-document>. So the code would, again, be
duplicated.

So my question is this: Is there a way to obtain the two versions of
the XML document (indented and not indented) without duplicating the
code?



Doesn't

  <xsl:template match="/">

     <xsl:result-document href="result1.xml" indent="no">

        <xsl:apply-templates/>

    </xsl:result-document>

    <xsl:result-document href="result2.xml" indent="yes">

      <xsl:apply-templates/>

   </xsl:result-document>

</xsl:template>

...


where ... is your original code (you could also xsl:import it) do what
you want?
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--


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