Although I see nothing to recommend it above xsl:result-document in this
case, for the sake of completeness I mention xsl:character-map.
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="doctype-name" select="'doc'"/>
<xsl:param name="dtd-path" select="'my-document.dtd'"/>
<xsl:character-map name="markup">
<xsl:output-character character="⟨" string="<"/>
<xsl:output-character character="⟩" string=">"/>
</xsl:character-map>
<xsl:output method="xml" indent="yes" use-character-maps="markup"/>
<xsl:template match="/">
<xsl:text> ⟨!DOCTYPE </xsl:text>
<xsl:value-of select="$doctype-name"/>
<xsl:text> "</xsl:text>
<xsl:value-of select="$dtd-path"/>
<xsl:text>"⟩ </xsl:text>
<doc>I'm a document</doc>
</xsl:template>
</xsl:stylesheet>
On Wed, 2019-05-15 at 15:15 +0000, Trevor Nicholls
trevor(_at_)castingthevoid(_dot_)com wrote:
Well you learn something every day. I have used result-document in the
POST-processor stylesheet to split the document apart but I had
absolutely no idea that - without an href - it could be used to define
the primary output. It works just the way I needed it to.
Thank you very much
cheers
T
From: Michael Kay mike(_at_)saxonica(_dot_)com
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com>
Sent: Wednesday, 15 May 2019 19:07
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] Dynamic DTD declaration in output
In XSLT 2.0 you can do:
<xsl:template match="/">
<xsl:result-document doctype-system="{$DefaultDTDPath}" method="xml"
encoding="utf-8">
....
</xsl:result-document>
</xsl:template>
Michael Kay
Saxonica
On 15 May 2019, at 06:45, Trevor Nicholls
trevor(_at_)castingthevoid(_dot_)com
<xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com> wrote:
Hi
I've got a simple stylesheet which is executed as a
pre-process when XML documents are loaded into FrameMaker. At
the moment the stylesheet includes the line
<xsl:output doctype-system="/path/to/docs.dtd"
method="xml" encoding="UTF-8" />
Because this stylesheet will be used by different users in
several different contexts, it would be brilliant if the path
to the DTD could be parameterised. I know the following is
invalid but the purpose of this post is to ask if there is any
way of engineering an equivalent:
<xsl:param name="DefaultDTDPath" />
<xsl:output doctype-system="{$DefaultDTDPath}"
method="xml" encoding="UTF-8" />
XSL version has to be 1.0 or 2.0.
Thanks
T
XSL-List info and archive
EasyUnsubscribe (by email)
XSL-List info and archive
EasyUnsubscribe (by email)
XSL-List info and archive
EasyUnsubscribe (by email)
--~----------------------------------------------------------------
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
--~--