KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17
System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64
User : nobody ( 99)
PHP Version : 5.2.17
Disable Function : NONE
Directory :  /proc/21585/root/usr/share/xml/gnome/xslt/xsldoc/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //proc/21585/root/usr/share/xml/gnome/xslt/xsldoc/xsldoc.xsl
<?xml version='1.0' encoding='UTF-8'?><!-- -*- indent-tabs-mode: nil -*- -->
<!--
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option) any
later version.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
details.

You should have received a copy of the GNU Lesser General Public License
along with this program; see the file COPYING.LGPL.  If not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
02111-1307, USA.
-->

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:doc="http://www.gnome.org/~shaunm/xsldoc"
                xmlns:fxi="faux://www.w3.org/2001/XInclude"
                xmlns:xi="http://www.w3.org/2001/XInclude"
                exclude-result-prefixes="doc"
                version="1.0">

<xsl:namespace-alias stylesheet-prefix="fxi" result-prefix="xi"/>
<xsl:output method="xml" encoding="utf-8" indent="yes"/>

<doc:title>Documenting XSLT Stylesheets</doc:title>


<!-- == xsldoc.id ========================================================== -->

<parameter xmlns="http://www.gnome.org/~shaunm/xsldoc">
  <name>xsldoc.id</name>
  <purpose>
    The id of the top-level element in the output
  </purpose>
</parameter>

<xsl:param name="xsldoc.id"/>


<!-- == xsldoc.toplevel_element ============================================ -->

<parameter xmlns="http://www.gnome.org/~shaunm/xsldoc">
  <name>xsldoc.toplevel_element</name>
  <purpose>
    The top-level element in the generated DocBook
  </purpose>
  <para>
    The <parameter>xsldoc.toplevel_element</parameter> parameter defines
    the top-level element used in the generated DocBook.  Allowed values are
    <literal>'article'</literal>, <literal>'appendix'</literal>,
    <literal>'chapter'</literal>, and
    <literal>'section'</literal>.  The default is
    <literal>'section'</literal>.  This may also be set by the
    <xmltag role="xmlpi">xsldoc.toplevel_element</xmltag>
    processing instruction in the source RELAX-NG file.
  </para>
</parameter>

<xsl:param name="xsldoc.toplevel_element">
  <xsl:choose>
    <xsl:when test="processing-instruction('xsldoc.toplevel_element')">
      <xsl:value-of select="processing-instruction('xsldoc.toplevel_element')"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="'section'"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:param>


<!-- == xsldoc.checks ====================================================== -->

<template xmlns="http://www.gnome.org/~shaunm/xsldoc">
  <name>xsldoc.checks</name>
  <purpose>
    Perform some checks on the source file
  </purpose>
</template>

<xsl:template name="xsldoc.checks">
  <xsl:variable name="stylesheet" select="."/>

  <!-- Check for orphaned doc:parameter -->
  <xsl:for-each select="doc:parameter">
    <xsl:if test="not(following-sibling::*[1]/
                        self::xsl:param[@name = current()/doc:name])">
      <xsl:message>
        <xsl:value-of select="$xsldoc.id"/>
        <xsl:text>: Orphaned doc:parameter </xsl:text>
        <xsl:value-of select="doc:name"/>
      </xsl:message>
    </xsl:if>
  </xsl:for-each>

  <!-- Check for undocumented xsl:param -->
  <xsl:for-each select="xsl:param[not(@doc:private = 'true')]">
    <xsl:if test="not(preceding-sibling::*[1]/
                        self::doc:parameter[doc:name = current()/@name])">
      <xsl:message>
        <xsl:value-of select="$xsldoc.id"/>
        <xsl:text>: Undocumented xsl:param </xsl:text>
        <xsl:value-of select="@name"/>
      </xsl:message>
    </xsl:if>
  </xsl:for-each>

  <!-- Check for orphaned doc:template -->
  <xsl:for-each select="doc:template">
    <xsl:if test="not(following-sibling::*[1]/
                        self::xsl:template[@name = current()/doc:name])">
      <xsl:message>
        <xsl:value-of select="$xsldoc.id"/>
        <xsl:text>: Orphaned doc:template </xsl:text>
        <xsl:value-of select="doc:name"/>
      </xsl:message>
    </xsl:if>
  </xsl:for-each>

  <!-- Check for undocumented xsl:template[@name] -->
  <xsl:for-each select="xsl:template[@name][not(@doc:private = 'true')]">
    <xsl:if test="not(preceding-sibling::*[1]/
                        self::doc:template[doc:name = current()/@name])">
      <xsl:message>
        <xsl:value-of select="$xsldoc.id"/>
        <xsl:text>: Undocumented xsl:template </xsl:text>
        <xsl:value-of select="@name"/>
      </xsl:message>
    </xsl:if>
  </xsl:for-each>

  <!-- Check for orphaned doc:mode -->
  <xsl:for-each select="doc:mode">
    <xsl:if test="not($stylesheet/xsl:template[@mode = current()/doc:name])">
      <xsl:if test="not($stylesheet/xsl:template//
                          xsl:call-template[@mode = current()/doc:name])">
        <xsl:message>
          <xsl:value-of select="$xsldoc.id"/>
          <xsl:text>: Orphaned doc:mode </xsl:text>
          <xsl:value-of select="doc:name"/>
        </xsl:message>
      </xsl:if>
    </xsl:if>
  </xsl:for-each>

  <!-- Check for undocumented xsl:template/@mode -->
  <xsl:for-each select="xsl:template[@mode]">
    <xsl:if test="not(preceding-sibling::xsl:template[@mode = current()/@mode])">
      <xsl:if test="not(preceding-sibling::doc:mode[doc:name = current()/@mode])">
        <xsl:message>
          <xsl:value-of select="$xsldoc.id"/>
          <xsl:text>: Undocumented xsl:template/@mode </xsl:text>
          <xsl:value-of select="@mode"/>
        </xsl:message>
      </xsl:if>
    </xsl:if>
  </xsl:for-each>

  <!-- Check for undocumented xsl:call-template/@mode -->
  <xsl:for-each select="xsl:template//xsl:call-template[@mode]">
    <xsl:if test="not($stylesheet/doc:mode[doc:name = current()/@mode])">
      <xsl:message>
        <xsl:value-of select="$xsldoc.id"/>
        <xsl:text>: Undocumented xsl:call-template/@mode </xsl:text>
        <xsl:value-of select="@mode"/>
      </xsl:message>
    </xsl:if>
  </xsl:for-each>
</xsl:template>


<!-- == xsldoc.summary ===================================================== -->

<template xmlns="http://www.gnome.org/~shaunm/xsldoc">
  <name>xsldoc.summary</name>
  <purpose>
    Generate the Synopsis section
  </purpose>
</template>

<xsl:template name="xsldoc.summary">
  <xsl:variable name="parameterQ">
    <xsl:choose>
      <xsl:when test="doc:parameter">
        <xsl:text>1</xsl:text>
      </xsl:when>
      <xsl:when test="xsl:include[@doc:summary = 'true']">
        <xsl:for-each select="xsl:include[@doc:summary = 'true']">
          <xsl:if test="document(@href)/xsl:stylesheet/doc:parameter">
            <xsl:text>1</xsl:text>
          </xsl:if>
        </xsl:for-each>
      </xsl:when>
    </xsl:choose>
  </xsl:variable>
  <xsl:variable name="templateQ">
    <xsl:choose>
      <xsl:when test="doc:template">
        <xsl:text>1</xsl:text>
      </xsl:when>
      <xsl:when test="xsl:include[@doc:summary = 'true']">
        <xsl:for-each select="xsl:include[@doc:summary = 'true']">
          <xsl:if test="document(@href)/xsl:stylesheet/doc:template">
            <xsl:text>1</xsl:text>
          </xsl:if>
        </xsl:for-each>
      </xsl:when>
    </xsl:choose>
  </xsl:variable>
  <xsl:variable name="modeQ">
    <xsl:choose>
      <xsl:when test="doc:mode">
        <xsl:text>1</xsl:text>
      </xsl:when>
      <xsl:when test="xsl:include[@doc:summary = 'true']">
        <xsl:for-each select="xsl:include[@doc:summary = 'true']">
          <xsl:if test="document(@href)/xsl:stylesheet/doc:mode">
            <xsl:text>1</xsl:text>
          </xsl:if>
        </xsl:for-each>
      </xsl:when>
    </xsl:choose>
  </xsl:variable>
  <xsl:if test="$parameterQ != ''">
    <variablelist>
      <title>Parameters</title>
      <xsl:apply-templates mode="xsldoc.summary.mode" select="doc:parameter"/>
      <xsl:for-each select="xsl:include[@doc:summary = 'true']">
        <xsl:apply-templates mode="xsldoc.summary.mode"
                             select="document(@href)/xsl:stylesheet/doc:parameter"/>
      </xsl:for-each>
    </variablelist>
  </xsl:if>
  <xsl:if test="$templateQ != ''">
    <variablelist>
      <title>Templates</title>
      <xsl:apply-templates mode="xsldoc.summary.mode" select="doc:template"/>
      <xsl:for-each select="xsl:include[@doc:summary = 'true']">
        <xsl:apply-templates mode="xsldoc.summary.mode"
                             select="document(@href)/xsl:stylesheet/doc:template"/>
      </xsl:for-each>
    </variablelist>
  </xsl:if>
  <xsl:if test="$modeQ != ''">
    <variablelist>
      <title>Modes</title>
      <xsl:apply-templates mode="xsldoc.summary.mode" select="doc:mode"/>
      <xsl:for-each select="xsl:include[@doc:summary = 'true']">
        <xsl:apply-templates mode="xsldoc.summary.mode"
                             select="document(@href)/xsl:stylesheet/doc:mode"/>
      </xsl:for-each>
    </variablelist>
  </xsl:if>
  <xsl:if test="$parameterQ = '' and $templateQ = '' and $modeQ = ''">
    <para>FIXME: Nothing to see here</para>
  </xsl:if>
  <xsl:apply-templates mode="xsldoc.refentry.mode" select="doc:parameter"/>
  <xsl:apply-templates mode="xsldoc.refentry.mode" select="doc:template"/>
  <xsl:apply-templates mode="xsldoc.refentry.mode" select="doc:mode"/>
</xsl:template>


<!-- == xsldoc.refentry.mode =============================================== -->

<mode xmlns="http://www.gnome.org/~shaunm/xsldoc">
  <name>xsldoc.refentry.mode</name>
</mode>

<!-- = doc:mode = -->
<xsl:template mode="xsldoc.refentry.mode" match="doc:mode">
  <refentry id="mode_{doc:name}">
    <indexterm>
      <primary> 
        <xsl:value-of select="doc:name"/>
      </primary>
    </indexterm>
    <refnamediv>
      <refname>
        <xsl:value-of select="doc:name"/>
      </refname>
      <refpurpose>
        <xsl:apply-templates select="doc:purpose"/>
      </refpurpose>
    </refnamediv>
    <refsection>
      <title>Description</title>
      <xsl:if test="not(doc:description/node())">
        <para>This mode has no description</para>
      </xsl:if>
      <xsl:apply-templates mode="xsldoc.docbook.mode"
                           select="doc:description/node()"/>
    </refsection>
    <xsl:for-each select="doc:section">
      <refsection>
        <xsl:apply-templates mode="xsldoc.docbook.mode" select="*"/>
      </refsection>
    </xsl:for-each>
  </refentry>
</xsl:template>

<!-- = doc:parameter = -->
<xsl:template mode="xsldoc.refentry.mode" match="doc:parameter">
  <refentry id="param_{doc:name}">
    <indexterm>
      <primary> 
        <xsl:value-of select="doc:name"/>
      </primary>
    </indexterm>
    <refnamediv>
      <refname>
        <xsl:apply-templates mode="xsldoc.docbook.mode"
                             select="doc:name/node()"/>
      </refname>
      <refpurpose>
        <xsl:apply-templates mode="xsldoc.docbook.mode"
                             select="doc:purpose/node()"/>
      </refpurpose>
    </refnamediv>
    <refsection>
      <title>Description</title>
      <xsl:if test="not(doc:description/node())">
        <para>This parameter has no description</para>
      </xsl:if>
      <xsl:apply-templates mode="xsldoc.docbook.mode"
                           select="doc:description/node()"/>
    </refsection>
    <xsl:for-each select="doc:section">
      <refsection>
        <xsl:apply-templates mode="xsldoc.docbook.mode" select="*"/>
      </refsection>
    </xsl:for-each>
  </refentry>
</xsl:template>

<!-- = doc:template = -->
<xsl:template mode="xsldoc.refentry.mode" match="doc:template">
  <refentry id="template_{doc:name}">
    <indexterm>
      <primary> 
        <xsl:value-of select="doc:name"/>
      </primary>
    </indexterm>
    <refnamediv>
      <refname>
        <xsl:apply-templates mode="xsldoc.docbook.mode"
                             select="doc:name/node()"/>
      </refname>
      <refpurpose>
        <xsl:apply-templates mode="xsldoc.docbook.mode"
                             select="doc:purpose/node()"/>
      </refpurpose>
    </refnamediv>
    <refsection>
      <title>Parameters</title>
      <xsl:choose>
        <xsl:when test="doc:parameter">
          <variablelist>
            <xsl:for-each select="doc:parameter">
              <varlistentry>
                <term>
                  <parameter>
                    <xsl:apply-templates mode="xsldoc.docbook.mode"
                                         select="doc:name/node()"/>
                  </parameter>
                </term>
                <listitem>
                  <para>
                    <xsl:apply-templates mode="xsldoc.docbook.mode"
                                         select="doc:purpose/node()"/>
                  </para>
                  <xsl:apply-templates mode="xsldoc.docbook.mode"
                                       select="doc:description/node()"/>
                </listitem>
              </varlistentry>
            </xsl:for-each>
          </variablelist>
        </xsl:when>
        <xsl:otherwise>
          <para>This template has no parameters.</para>
        </xsl:otherwise>
      </xsl:choose>
    </refsection>
    <xsl:if test="doc:description">
      <refsection>
        <title>Description</title>
        <xsl:apply-templates mode="xsldoc.docbook.mode"
                             select="doc:description/node()"/>
      </refsection>
    </xsl:if>
    <xsl:for-each select="doc:section">
      <refsection>
        <xsl:apply-templates mode="xsldoc.docbook.mode" select="*"/>
      </refsection>
    </xsl:for-each>
  </refentry>
</xsl:template>


<!-- == xsldoc.summary.mode ================================================ -->

<mode xmlns="http://www.gnome.org/~shaunm/xsldoc">
  <name>xsldoc.summary.mode</name>
</mode>

<!-- = doc:mode = -->
<xsl:template mode="xsldoc.summary.mode" match="doc:mode">
  <varlistentry>
    <term>
      <link linkend="mode_{doc:name}">
        <function role="mode">
          <xsl:apply-templates mode="xsldoc.docbook.mode"
                               select="doc:name/node()"/>
        </function>
      </link>
    </term>
    <listitem>
      <para>
        <xsl:apply-templates mode="xsldoc.docbook.mode"
                             select="doc:purpose"/>
      </para>
    </listitem>
  </varlistentry>
</xsl:template>

<!-- = doc:parameter = -->
<xsl:template mode="xsldoc.summary.mode" match="doc:parameter">
  <varlistentry>
    <term>
      <link linkend="param_{doc:name}">
        <parameter>
          <xsl:value-of select="doc:name"/>
        </parameter>
      </link>
    </term>
    <listitem>
      <para>
        <xsl:apply-templates select="doc:purpose"/>
      </para>
    </listitem>
  </varlistentry>
</xsl:template>

<!-- = doc:template = -->
<xsl:template mode="xsldoc.summary.mode" match="doc:template">
  <varlistentry>
    <term>
      <link linkend="template_{doc:name}">
        <function role="template">
          <xsl:value-of select="doc:name"/>
        </function>
      </link>
    </term>
    <listitem>
      <para>
        <xsl:apply-templates select="doc:purpose"/>
      </para>
    </listitem>
  </varlistentry>
</xsl:template>


<!-- == xsldoc.docbook.mode ================================================ -->

<mode xmlns="http://www.gnome.org/~shaunm/xsldoc">
  <name>xsldoc.docbook.mode</name>
</mode>

<xsl:template mode="xsldoc.docbook.mode" match="doc:xmltag">
  <xsl:element name="sgmltag">
    <xsl:for-each select="attribute::*">
      <xsl:copy/>
    </xsl:for-each>
    <xsl:for-each select="* | text()">
      <xsl:apply-templates mode="xsldoc.docbook.mode" select="."/>
    </xsl:for-each>
  </xsl:element>
</xsl:template>

<xsl:template mode="xsldoc.docbook.mode" match="doc:*">
  <xsl:element name="{local-name(.)}">
    <xsl:for-each select="attribute::*">
      <xsl:copy/>
    </xsl:for-each>
    <xsl:for-each select="* | text()">
      <xsl:apply-templates mode="xsldoc.docbook.mode" select="."/>
    </xsl:for-each>
  </xsl:element>
</xsl:template>

<xsl:template mode="xsldoc.docbook.mode" match="*">
  <xsl:copy>
    <xsl:for-each select="node()">
      <xsl:apply-templates mode="xsldoc.docbook.mode" select="."/>
    </xsl:for-each>
  </xsl:copy>
</xsl:template>


<!-- == xsldoc.params ====================================================== -->

<template xmlns="http://www.gnome.org/~shaunm/xsldoc">
  <name>xsldoc.params</name>
  <purpose>
    Generate the Parameters section
  </purpose>
</template>

<xsl:template name="xsldoc.params">
  <xsl:variable name="params"
                select="ref:refname[following-sibling::xsl:*[1]/self::xsl:param]"/>
  <xsl:if test="$params">
    <section>
      <xsl:attribute name="id">
        <xsl:value-of select="concat($xsldoc.id, '-params')"/>
      </xsl:attribute>
      <title>Stylesheet Parameters</title>
      <xsl:for-each select="$params">
        <refentry>
          <refnamediv>
            <refname>
              <xsl:apply-templates/>
            </refname>
            <xsl:if test="following-sibling::ref:*[1]/self::ref:refpurpose">
              <refpurpose>
                <xsl:apply-templates select="following-sibling::ref:*[1]"/>
              </refpurpose>
            </xsl:if>
          </refnamediv>
        </refentry>
      </xsl:for-each>
    </section>
  </xsl:if>
</xsl:template>


<!-- == xsldoc.named ======================================================= -->

<template xmlns="http://www.gnome.org/~shaunm/xsldoc">
  <name>xsldoc.named</name>
  <purpose>
    Generate the Named Templates section
  </purpose>
</template>

<xsl:template name="xsldoc.named">
  <xsl:variable name="named"
                select="ref:refname
                          [following-sibling::xsl:*[1]
                            /self::xsl:template[@name]]"/>
  <xsl:if test="$named">
    <section>
      <xsl:attribute name="id">
        <xsl:value-of select="concat($xsldoc.id, '-named')"/>
      </xsl:attribute>
      <title>Named Templates</title>
      <xsl:for-each select="$named">
        <refentry>
          <refnamediv>
            <refname>
              <xsl:apply-templates/>
            </refname>
            <xsl:if test="following-sibling::ref:*[1]/self::ref:refpurpose">
              <refpurpose>
                <xsl:apply-templates select="following-sibling::ref:*[1]"/>
              </refpurpose>
            </xsl:if>
          </refnamediv>
        </refentry>
      </xsl:for-each>
    </section>
  </xsl:if>
</xsl:template>


<!-- == xsldoc.includes ==================================================== -->

<template xmlns="http://www.gnome.org/~shaunm/xsldoc">
  <name>xsldoc.includes</name>
  <purpose>
    Include external files
  </purpose>
</template>

<xsl:template name="xsldoc.includes">
  <xsl:for-each select="xsl:include[@doc:include='true']">
    <fxi:include>
      <xsl:attribute name="href">
        <xsl:call-template name="_hrefify"/>
      </xsl:attribute>
    </fxi:include>
  </xsl:for-each>
</xsl:template>

<xsl:template name="_hrefify" doc:private="true">
  <xsl:param name="href" select="@href"/>
  <xsl:choose>
    <xsl:when test="contains($href, '/')">
      <xsl:call-template name="_hrefify">
        <xsl:with-param name="href" select="substring-after($href, '/')"/>
      </xsl:call-template>
    </xsl:when>
    <xsl:when test="substring($href, string-length($href) - 3, 4) = '.xsl'">
      <xsl:value-of select="concat(substring($href, 1, string-length($href) - 3),
                                   'xml')"/>
    </xsl:when>
    <xsl:otherwise>
      <xsl:value-of select="$href"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>


<!-- == Matched Templates ================================================== -->

<!-- = /xsl:stylesheet = -->
<xsl:template match="/xsl:stylesheet">
  <xsl:variable name="toplevel_element">
    <xsl:choose>
      <xsl:when test="
                $xsldoc.toplevel_element = 'article'   or
                $xsldoc.toplevel_element = 'appendix'  or
                $xsldoc.toplevel_element = 'chapter'   or
                $xsldoc.toplevel_element = 'section'   ">
        <xsl:value-of select="$xsldoc.toplevel_element"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:message terminate="yes">
          <xsl:text>Unsupported value of $xsldoc.toplevel_element: </xsl:text>
          <xsl:value-of select="$xsldoc.toplevel_element"/>
        </xsl:message>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:variable>
  <xsl:element name="{$toplevel_element}" namespace="">
    <xsl:attribute name="id">
      <xsl:value-of select="concat($toplevel_element, '-', $xsldoc.id)"/>
    </xsl:attribute>
    <title>
      <xsl:apply-templates mode="xsldoc.docbook.mode"
                           select="doc:title[1]/node()"/>
    </title>
    <xsl:call-template name="xsldoc.checks"/>
    <xsl:call-template name="xsldoc.summary"/>
    <xsl:call-template name="xsldoc.includes"/>
    <!--
      <xsl:call-template name="xsldoc.params"/>
      <xsl:call-template name="xsldoc.named"/>
      <section>
      <xsl:attribute name="id">
      <xsl:value-of select="concat($xsldoc.id, '-matched')"/>
      </xsl:attribute>
      <title>Matched Templates</title>
      </section>
    -->
  </xsl:element>
</xsl:template>

</xsl:stylesheet>

Anon7 - 2021