xsl-list
[Top] [All Lists]

Re: [xsl] Dynamic DTD declaration in output

2019-05-15 22:12:20
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="&#x27E8;" string="&lt;"/>
    <xsl:output-character character="&#x27E9;" string="&gt;"/>
  </xsl:character-map>

  <xsl:output method="xml" indent="yes" use-character-maps="markup"/>

  <xsl:template match="/">
    <xsl:text>&#10;&#x27E8;!DOCTYPE </xsl:text>
    <xsl:value-of select="$doctype-name"/>
    <xsl:text> "</xsl:text>
    <xsl:value-of select="$dtd-path"/>
    <xsl:text>"&#x27E9;&#10;</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
--~--

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