Blame xsl/common/mklistings.xsl

Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
                xmlns:xi="http://www.w3.org/2001/XInclude"
Packit Service 76cb02
                version='1.0'>
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
     $Id
Packit Service 76cb02
     ********************************************************************
Packit Service 76cb02
Packit Service 76cb02
     This file is part of the XSL DocBook Stylesheet distribution.
Packit Service 76cb02
     See ../README or http://docbook.sf.net/release/xsl/current/ for
Packit Service 76cb02
     copyright and other information.
Packit Service 76cb02
Packit Service 76cb02
     ******************************************************************** -->
Packit Service 76cb02
Packit Service 76cb02
<xsl:param name="textdata.default.encoding">iso-8859-1</xsl:param>
Packit Service 76cb02
<xsl:param name="current.dir">.</xsl:param>
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
     * the DocBook Project (thanks Michael). It makes a listing tree of the
Packit Service 76cb02
     * external text files referenced in the document, with each reference
Packit Service 76cb02
     * replaced with corresponding Xinclude instance.
Packit Service 76cb02
     * 
Packit Service 76cb02
     *   <textobject><textdata fileref="foo.txt">
Packit Service 76cb02
     *   <imagedata format="linespecific" fileref="foo.txt">
Packit Service 76cb02
     *   <inlinegraphic format="linespecific" fileref="foo.txt">
Packit Service 76cb02
     *
Packit Service 76cb02
     * Those become in the result tree:
Packit Service 76cb02
     *
Packit Service 76cb02
     *   <listing type="textdata">
Packit Service 76cb02
     *     <xi:include href="foo.txt" parse="text"/></listing>
Packit Service 76cb02
     *   <listing type="imagedata">
Packit Service 76cb02
     *     <xi:include href="foo.txt" parse="text"/></listing>
Packit Service 76cb02
     *   <listing type="inlinegraphic">
Packit Service 76cb02
     *     <xi:include href="foo.txt" parse="text"/></listing>
Packit Service 76cb02
     *
Packit Service 76cb02
     * It also works as expected with entityref in place of fileref,
Packit Service 76cb02
     * and copies over the value of the <textdata> encoding attribute (if
Packit Service 76cb02
     * found). It is basically intended as an alternative to using the
Packit Service 76cb02
     * DocBook XSLT Java insertfile() extension.
Packit Service 76cb02
-->
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
<xsl:template name="string-replace" >
Packit Service 76cb02
  <xsl:param name="string"/>
Packit Service 76cb02
  <xsl:param name="from"/>
Packit Service 76cb02
  <xsl:param name="to"/>
Packit Service 76cb02
  <xsl:choose>
Packit Service 76cb02
    <xsl:when test="contains($string,$from)">
Packit Service 76cb02
      <xsl:value-of select="substring-before($string,$from)"/>
Packit Service 76cb02
      <xsl:value-of select="$to"/>
Packit Service 76cb02
      <xsl:call-template name="string-replace">
Packit Service 76cb02
        <xsl:with-param name="string" select="substring-after($string,$from)"/>
Packit Service 76cb02
        <xsl:with-param name="from" select="$from"/>
Packit Service 76cb02
        <xsl:with-param name="to" select="$to"/>
Packit Service 76cb02
      </xsl:call-template>
Packit Service 76cb02
    </xsl:when>
Packit Service 76cb02
    <xsl:otherwise>
Packit Service 76cb02
      <xsl:value-of select="$string"/>
Packit Service 76cb02
    </xsl:otherwise>
Packit Service 76cb02
  </xsl:choose>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
<xsl:template name="get.external.filename">
Packit Service 76cb02
  <xsl:variable name="filename">
Packit Service 76cb02
  <xsl:choose>
Packit Service 76cb02
    <xsl:when test="@entityref">
Packit Service 76cb02
      <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
Packit Service 76cb02
    </xsl:when>
Packit Service 76cb02
    <xsl:otherwise>
Packit Service 76cb02
      <xsl:value-of select="@fileref"/>
Packit Service 76cb02
    </xsl:otherwise>
Packit Service 76cb02
  </xsl:choose>
Packit Service 76cb02
  </xsl:variable>
Packit Service 76cb02
  <xsl:variable name="absfilename">
Packit Service 76cb02
    <xsl:choose>
Packit Service 76cb02
    
Packit Service 76cb02
                    contains($filename, ':')">
Packit Service 76cb02
      
Packit Service 76cb02
      <xsl:value-of select="$filename"/>
Packit Service 76cb02
    </xsl:when>
Packit Service 76cb02
    <xsl:otherwise>
Packit Service 76cb02
      <xsl:value-of select="$current.dir"/>
Packit Service 76cb02
      <xsl:text>/</xsl:text>
Packit Service 76cb02
      <xsl:value-of select="$filename"/>
Packit Service 76cb02
    </xsl:otherwise>
Packit Service 76cb02
    </xsl:choose>
Packit Service 76cb02
  </xsl:variable>
Packit Service 76cb02
  
Packit Service 76cb02
  <xsl:call-template name="string-replace">
Packit Service 76cb02
    <xsl:with-param name="string" select="$absfilename"/>
Packit Service 76cb02
    <xsl:with-param name="from" select="' '"/>
Packit Service 76cb02
    <xsl:with-param name="to" select="'%20'"/>
Packit Service 76cb02
  </xsl:call-template>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
 
Packit Service 76cb02
Packit Service 76cb02
                    imagedata[@format='linespecific']|
Packit Service 76cb02
                    inlinegraphic[@format='linespecific']" mode="lstid">
Packit Service 76cb02
 
Packit Service 76cb02
             level="any"
Packit Service 76cb02
             format="1"/>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
<xsl:template match="textobject[child::textdata[@entityref|@fileref]]">
Packit Service 76cb02
  <xsl:apply-templates select="textdata"/>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
<xsl:template match="textdata[@entityref|@fileref]">
Packit Service 76cb02
  <xsl:variable name="filename">
Packit Service 76cb02
    <xsl:call-template name="get.external.filename"/>
Packit Service 76cb02
  </xsl:variable>
Packit Service 76cb02
  <xsl:variable name="encoding">
Packit Service 76cb02
    <xsl:choose>
Packit Service 76cb02
      <xsl:when test="@encoding">
Packit Service 76cb02
        <xsl:value-of select="@encoding"/>
Packit Service 76cb02
      </xsl:when>
Packit Service 76cb02
      <xsl:otherwise>
Packit Service 76cb02
        <xsl:value-of select="$textdata.default.encoding"/>
Packit Service 76cb02
      </xsl:otherwise>
Packit Service 76cb02
    </xsl:choose>
Packit Service 76cb02
  </xsl:variable>
Packit Service 76cb02
  <xsl:variable name="lstid">
Packit Service 76cb02
    <xsl:apply-templates select="." mode="lstid"/>
Packit Service 76cb02
  </xsl:variable>
Packit Service 76cb02
  <listing type="textdata" lstid="{$lstid}">
Packit Service 76cb02
    <xsl:element name="xi:include">
Packit Service 76cb02
      <xsl:attribute name="href">
Packit Service 76cb02
        <xsl:value-of select="$filename"/>
Packit Service 76cb02
      </xsl:attribute>
Packit Service 76cb02
      <xsl:attribute name="parse">text</xsl:attribute>
Packit Service 76cb02
      <xsl:attribute name="encoding">
Packit Service 76cb02
        <xsl:value-of select="$encoding"/>
Packit Service 76cb02
      </xsl:attribute>
Packit Service 76cb02
    </xsl:element>
Packit Service 76cb02
  </listing>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
    match="inlinemediaobject
Packit Service 76cb02
           [child::imageobject
Packit Service 76cb02
           [child::imagedata
Packit Service 76cb02
           [@format = 'linespecific' and
Packit Service 76cb02
           (@entityref|@fileref)]]]">
Packit Service 76cb02
  <xsl:apply-templates select="imageobject/imagedata"/>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
                     [@format = 'linespecific' and
Packit Service 76cb02
                     (@entityref|@fileref)]">
Packit Service 76cb02
  <xsl:variable name="filename">
Packit Service 76cb02
    <xsl:call-template name="get.external.filename"/>
Packit Service 76cb02
  </xsl:variable>
Packit Service 76cb02
  <xsl:variable name="lstid">
Packit Service 76cb02
    <xsl:apply-templates select="." mode="lstid"/>
Packit Service 76cb02
  </xsl:variable>
Packit Service 76cb02
  <listing type="imagedata"  lstid="{$lstid}">
Packit Service 76cb02
    <xsl:element name="xi:include">
Packit Service 76cb02
      <xsl:attribute name="href">
Packit Service 76cb02
        <xsl:value-of select="$filename"/>
Packit Service 76cb02
      </xsl:attribute>
Packit Service 76cb02
      <xsl:attribute name="parse">text</xsl:attribute>
Packit Service 76cb02
      <xsl:attribute name="encoding">
Packit Service 76cb02
        <xsl:value-of select="$textdata.default.encoding"/>
Packit Service 76cb02
      </xsl:attribute>
Packit Service 76cb02
    </xsl:element>
Packit Service 76cb02
  </listing>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
                     [@format = 'linespecific' and
Packit Service 76cb02
                     (@entityref|@fileref)]">
Packit Service 76cb02
  <xsl:variable name="filename">
Packit Service 76cb02
    <xsl:call-template name="get.external.filename"/>
Packit Service 76cb02
  </xsl:variable>
Packit Service 76cb02
  <xsl:variable name="lstid">
Packit Service 76cb02
    <xsl:apply-templates select="." mode="lstid"/>
Packit Service 76cb02
  </xsl:variable>
Packit Service 76cb02
  <listing type="inlinegraphic" lstid="{$lstid}">
Packit Service 76cb02
    <xsl:element name="xi:include">
Packit Service 76cb02
      <xsl:attribute name="href">
Packit Service 76cb02
        <xsl:value-of select="$filename"/>
Packit Service 76cb02
      </xsl:attribute>
Packit Service 76cb02
      <xsl:attribute name="parse">text</xsl:attribute>
Packit Service 76cb02
      <xsl:attribute name="encoding">
Packit Service 76cb02
        <xsl:value-of select="$textdata.default.encoding"/>
Packit Service 76cb02
      </xsl:attribute>
Packit Service 76cb02
    </xsl:element>
Packit Service 76cb02
  </listing>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
Packit Service 76cb02
<xsl:template match="node() | @*">
Packit Service 76cb02
  <xsl:apply-templates select="@* | node()"/>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
<xsl:template match="/">
Packit Service 76cb02
  <listings xmlns:xi="http://www.w3.org/2001/XInclude">
Packit Service 76cb02
  <xsl:apply-templates/>
Packit Service 76cb02
  </listings>
Packit Service 76cb02
</xsl:template>
Packit Service 76cb02
Packit Service 76cb02
</xsl:stylesheet>