mirror of
https://github.com/apache/httpd.git
synced 2025-07-05 16:21:14 +03:00
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1563740 13f79535-47bb-0310-9956-ffa450edef68
671 lines
25 KiB
XML
671 lines
25 KiB
XML
<?xml version="1.0"?>
|
|
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
this work for additional information regarding copyright ownership.
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
(the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<!DOCTYPE xsl:stylesheet [
|
|
<!ENTITY lf SYSTEM "../xsl/util/lf.xml">
|
|
<!ENTITY tab SYSTEM "../xsl/util/tab.xml">
|
|
|
|
<!ENTITY ul.start SYSTEM "../xsl/util/ul-start.xml">
|
|
<!ENTITY ul.end SYSTEM "../xsl/util/ul-end.xml" >
|
|
<!ENTITY li.start SYSTEM "../xsl/util/li-start.xml">
|
|
<!ENTITY li.end SYSTEM "../xsl/util/li-end.xml" >
|
|
]>
|
|
<xsl:stylesheet version="1.0"
|
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
xmlns="">
|
|
|
|
<!-- -->
|
|
<!-- WARNING! Do not touch anything, especially the whitespaces [1] -->
|
|
<!-- unless you know, what you're doing. The HTML help compiler parses -->
|
|
<!-- the TOC file not really as html instead of line by line and takes -->
|
|
<!-- care of whitespace indentations etc. -->
|
|
<!-- -->
|
|
<!-- [1] Covered by the &lf; and &tab; entities. -->
|
|
<!-- -->
|
|
<!-- You have been warned. -->
|
|
<!-- -->
|
|
|
|
<!-- create nodeset for referencing later -->
|
|
<xsl:variable name="not-exists" select="document('')/xsl:stylesheet/xsl:template
|
|
[@name='data']/not-exists/file" />
|
|
|
|
<xsl:template name="data">
|
|
<!-- documents not converted (yet?). -->
|
|
<not-exists>
|
|
<!-- example: <file>developer/API.xml</file> -->
|
|
</not-exists>
|
|
</xsl:template>
|
|
|
|
<!-- Constants used for case translation -->
|
|
<xsl:variable name="lowercase" select="'abcdefghijklmnopqrstuvwxyz'" />
|
|
<xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />
|
|
|
|
<!-- document() works relative to the xsl (!) file -->
|
|
<xsl:variable name="basedir" select="'../../'"/>
|
|
|
|
<!-- icons -->
|
|
<xsl:variable name="icon.document" select="'11'" />
|
|
<xsl:variable name="icon.document.not-translated" select="'12'" />
|
|
<xsl:variable name="icon.section" select="'35'" />
|
|
<xsl:variable name="icon.directive" select="'41'" />
|
|
<xsl:variable name="icon.commondirective" select="'19'" />
|
|
<!-- this should not happen. this icon is only displayed within the
|
|
toc view of the help workshop (it's a question mark): -->
|
|
<xsl:variable name="icon.no-anchor" select="'9'" />
|
|
|
|
<!-- for module-translatename -->
|
|
<xsl:include href="../xsl/util/modtrans.xsl"/>
|
|
|
|
<!-- ==================================================================== -->
|
|
<!-- <sitemap> -->
|
|
<!-- Create CHM contents file (toc) from sitemap -->
|
|
<!-- The file is an html style text file (see warning on top) -->
|
|
<!-- ==================================================================== -->
|
|
<xsl:template match="/sitemap">
|
|
|
|
<!-- html head -->
|
|
<xsl:text><html><head></xsl:text>
|
|
<xsl:text><title>Apache HTTP Server Documentation</title></xsl:text>
|
|
<xsl:text></head></xsl:text>&lf;
|
|
|
|
<xsl:text><body></xsl:text>&lf;
|
|
|
|
<!-- toc properties first -->
|
|
<xsl:text><object type="text/site properties"></xsl:text>&lf;&tab;
|
|
<!-- XXX: that magic value is still obfuscated. Research needed ... -->
|
|
<xsl:text><param name="Window Styles" value="0x800027"></xsl:text>&lf;&tab;
|
|
<xsl:text><param name="Font" value="</xsl:text>
|
|
<xsl:value-of select="$toc-font" />
|
|
<xsl:text>"></xsl:text>&lf;
|
|
<xsl:text></object></xsl:text>&lf;
|
|
|
|
&ul.start; &lf;
|
|
|
|
<!-- index page on top. -->
|
|
&li.start;
|
|
<xsl:call-template name="object">
|
|
<xsl:with-param name="name"
|
|
select="normalize-space($message[@id='apachehttpserver'])" />
|
|
<xsl:with-param name="href" select="'index.html'" />
|
|
<xsl:with-param name="indent" select="'		'" />
|
|
</xsl:call-template>
|
|
&li.end; &lf;
|
|
|
|
<!-- iterate over the categories in document order -->
|
|
<xsl:for-each select="category">
|
|
&li.start;
|
|
<xsl:call-template name="folder">
|
|
<xsl:with-param name="name" select="normalize-space(title)" />
|
|
</xsl:call-template>&lf;&tab;
|
|
|
|
&ul.start; &lf;&tab;
|
|
<xsl:apply-templates select="page" />
|
|
<xsl:if test="@id = 'modules'">
|
|
<xsl:apply-templates select="document($allmodules)/modulefilelist" />
|
|
</xsl:if>
|
|
&ul.end; &lf;
|
|
&li.end; &lf;&tab;
|
|
</xsl:for-each>&lf;
|
|
|
|
&ul.end; &lf;
|
|
|
|
<xsl:text></body></html></xsl:text>&lf;
|
|
</xsl:template>
|
|
<!-- /sitemap -->
|
|
|
|
|
|
<!-- ==================================================================== -->
|
|
<!-- category/page -->
|
|
<!-- ==================================================================== -->
|
|
<xsl:template match="category/page">
|
|
<xsl:if test="not(starts-with(@href,'http:') or starts-with(@href, 'https:'))">
|
|
&li.start;
|
|
|
|
<!-- document entry, if not href attribute, assume it means "sitemap" -->
|
|
<xsl:call-template name="object">
|
|
<xsl:with-param name="name">
|
|
<xsl:choose>
|
|
<xsl:when test="@href">
|
|
<xsl:value-of select="normalize-space(.)" />
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="normalize-space($message[@id='sitemap'])" />
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:with-param>
|
|
<xsl:with-param name="href">
|
|
<xsl:choose>
|
|
<xsl:when test="not(@href)">
|
|
<xsl:text>sitemap.html</xsl:text>
|
|
</xsl:when>
|
|
<xsl:when test="contains(@href, '#')">
|
|
<xsl:value-of select="substring-before(@href, '#')" />
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="@href"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:with-param>
|
|
<xsl:with-param name="indent" select="'		'" />
|
|
</xsl:call-template>
|
|
|
|
<!-- now try to index the sections of the document -->
|
|
<xsl:apply-templates select="self::page" mode="index" />
|
|
|
|
&li.end; &lf;&tab;
|
|
</xsl:if>
|
|
</xsl:template>
|
|
<!-- /category/page -->
|
|
|
|
|
|
<!-- ==================================================================== -->
|
|
<!-- category/page, mode="index" -->
|
|
<!-- display all section headings of one page -->
|
|
<!-- ==================================================================== -->
|
|
<xsl:template match="category/page" mode="index">
|
|
<xsl:variable name="href.offline">
|
|
<xsl:choose>
|
|
<xsl:when test="string-length(@href) = 0">
|
|
<xsl:text>sitemap.html</xsl:text>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:call-template name="helper.href.offline">
|
|
<xsl:with-param name="href" select="@href" />
|
|
</xsl:call-template>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
<xsl:variable name="xml"
|
|
select="concat(substring-before($href.offline, '.html'), '.xml')" />
|
|
|
|
<xsl:if test="not($xml = $not-exists)">
|
|
<xsl:variable name="xmlfile">
|
|
<xsl:variable name="metafile"
|
|
select="document(document(concat($basedir, $xml))/*/@metafile)
|
|
/metafile" />
|
|
<xsl:choose>
|
|
<xsl:when test="$metafile/variants/variant[.=$doclang] and not
|
|
($metafile/variants/variant[.=$doclang]
|
|
/@htmlonly = 'yes')">
|
|
<xsl:value-of select="concat($basedir,
|
|
substring-before($xml, '.xml'), $xml-ext)" />
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="concat($basedir, $xml)" />
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
|
|
<xsl:variable name="current" select="document($xmlfile)" />
|
|
|
|
<xsl:if test="count($current/*/*[local-name()='section' or
|
|
local-name()='category']) > 1">
|
|
&lf;&tab;&tab;&tab;
|
|
&ul.start; &lf;&tab;&tab;&tab;
|
|
|
|
<xsl:for-each select="$current/*/*[local-name()='section' or
|
|
local-name()='category']">
|
|
&li.start;
|
|
|
|
<xsl:call-template name="object">
|
|
<xsl:with-param name="name" select="normalize-space(title)" />
|
|
<xsl:with-param name="href">
|
|
<xsl:if test="@id">
|
|
<xsl:value-of
|
|
select="concat(substring-before($xml, '.xml'),
|
|
'.html#', @id)" />
|
|
</xsl:if>
|
|
</xsl:with-param>
|
|
<xsl:with-param name="indent" select="'				'" />
|
|
</xsl:call-template>
|
|
|
|
&li.end; &lf;&tab;&tab;
|
|
</xsl:for-each>
|
|
|
|
&ul.end; &lf;&tab;
|
|
</xsl:if> <!-- count() > 1 -->
|
|
</xsl:if> <!-- xml exists -->
|
|
</xsl:template>
|
|
<!-- /category/page, "index" -->
|
|
|
|
|
|
<!-- ==================================================================== -->
|
|
<!-- category/modulefilelist -->
|
|
<!-- process all listed module files -->
|
|
<!-- ==================================================================== -->
|
|
<xsl:template match="modulefilelist">
|
|
<!-- create a module name translation list for sorting -->
|
|
<xsl:variable name="translist">
|
|
<xsl:text>-</xsl:text>
|
|
|
|
<xsl:for-each select="modulefile">
|
|
<xsl:variable name="current"
|
|
select="document(concat($basedir,'mod/',.))/modulesynopsis" />
|
|
|
|
<xsl:text> </xsl:text>
|
|
<xsl:value-of select="$current/name"/>
|
|
<xsl:text> </xsl:text>
|
|
<xsl:call-template name="module-translatename">
|
|
<xsl:with-param name="name" select="$current/name"/>
|
|
</xsl:call-template>
|
|
<xsl:text> -</xsl:text>
|
|
</xsl:for-each>
|
|
</xsl:variable>
|
|
|
|
<!-- put core and mpm_common on top -->
|
|
<xsl:call-template name="toc-entry.mpm">
|
|
<xsl:with-param name="current"
|
|
select="document(concat($basedir, 'mod/', modulefile[starts-with(.,
|
|
'core.xml')]/text()))/modulesynopsis" />
|
|
<xsl:with-param name="name" select="'core'" />
|
|
</xsl:call-template>
|
|
|
|
<xsl:call-template name="toc-entry.mpm">
|
|
<xsl:with-param name="current"
|
|
select="document(concat($basedir, 'mod/', modulefile[starts-with(.,
|
|
'mpm_common.xml')]/text()))/modulesynopsis" />
|
|
<xsl:with-param name="name" select="'common'" />
|
|
</xsl:call-template>
|
|
|
|
<!-- remaining MPMs -->
|
|
<xsl:for-each select="modulefile">
|
|
<xsl:sort select="substring-before(substring-after($translist, concat('- ',
|
|
document(concat($basedir, 'mod/', .))/modulesynopsis/name, ' ')), ' -')" />
|
|
|
|
<xsl:variable name="current"
|
|
select="document(concat($basedir, 'mod/', .))/modulesynopsis" />
|
|
|
|
<xsl:if test="$current/status='MPM' and not($current/name='mpm_common')">
|
|
<xsl:call-template name="toc-entry.mpm">
|
|
<xsl:with-param name="current" select="$current" />
|
|
<xsl:with-param name="name" select="substring-before(
|
|
substring-after($translist, concat('- ', $current/name, ' ')),
|
|
' -')" />
|
|
</xsl:call-template>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
|
|
<!-- normal modules -->
|
|
<xsl:for-each select="modulefile">
|
|
<xsl:sort select="substring-before(substring-after($translist, concat('- ',
|
|
document(concat($basedir, 'mod/', .))/modulesynopsis/name, ' ')), ' -')" />
|
|
|
|
<xsl:variable name="current"
|
|
select="document(concat($basedir, 'mod/', .))/modulesynopsis" />
|
|
|
|
<xsl:if test="not($current/status='MPM') and not($current/status='Core')">
|
|
<xsl:call-template name="toc-entry.module">
|
|
<xsl:with-param name="current" select="$current"/>
|
|
</xsl:call-template>
|
|
</xsl:if>
|
|
</xsl:for-each>
|
|
</xsl:template>
|
|
<!-- /category/modulefilelist -->
|
|
|
|
|
|
<!-- ==================================================================== -->
|
|
<!-- toc-entry.mpm -->
|
|
<!-- create entry (and initiate subsection entries) of an mpm -->
|
|
<!-- ==================================================================== -->
|
|
<xsl:template name="toc-entry.mpm">
|
|
<xsl:param name="current" />
|
|
<xsl:param name="name" />
|
|
|
|
&li.start;
|
|
|
|
<xsl:call-template name="object">
|
|
<xsl:with-param name="name">
|
|
<xsl:choose>
|
|
<xsl:when test="$name='core'">
|
|
<xsl:value-of select="normalize-space($message[@id='apachecore'])" />
|
|
</xsl:when>
|
|
<xsl:when test="$name='common'">
|
|
<xsl:value-of select="normalize-space($message[@id='apachempmcommon'])" />
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="normalize-space($message[@id='apachempm'])" />
|
|
<xsl:text> </xsl:text>
|
|
<xsl:value-of select="$name" />
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:with-param>
|
|
<xsl:with-param name="href"
|
|
select="concat('mod/', $current/name, '.html')" />
|
|
<xsl:with-param name="indent" select="'			'" />
|
|
</xsl:call-template>
|
|
|
|
<xsl:call-template name="sections-and-directives">
|
|
<xsl:with-param name="current" select="$current" />
|
|
</xsl:call-template>
|
|
|
|
&li.end; &lf;&tab;
|
|
</xsl:template>
|
|
<!-- /toc-entry.mpm -->
|
|
|
|
|
|
<!-- ==================================================================== -->
|
|
<!-- toc-entry.module -->
|
|
<!-- create entry (and initiate subsection entries) of a module -->
|
|
<!-- ==================================================================== -->
|
|
<xsl:template name="toc-entry.module">
|
|
<xsl:param name="current"/>
|
|
|
|
&li.start;
|
|
|
|
<xsl:call-template name="object">
|
|
<xsl:with-param name="name">
|
|
<xsl:value-of select="normalize-space($message[@id='apachemodule'])" />
|
|
<xsl:text> </xsl:text>
|
|
<xsl:value-of select="$current/name" />
|
|
</xsl:with-param>
|
|
<xsl:with-param name="href"
|
|
select="concat('mod/', $current/name, '.html')" />
|
|
<xsl:with-param name="indent" select="'			'" />
|
|
</xsl:call-template>
|
|
|
|
<xsl:call-template name="sections-and-directives">
|
|
<xsl:with-param name="current" select="$current" />
|
|
</xsl:call-template>
|
|
|
|
&li.end; &lf;&tab;
|
|
</xsl:template>
|
|
<!-- /toc-entry.module -->
|
|
|
|
|
|
<!-- ==================================================================== -->
|
|
<!-- sections-and-directives -->
|
|
<!-- process sections and directives of a module file -->
|
|
<!-- ==================================================================== -->
|
|
<xsl:template name="sections-and-directives">
|
|
<xsl:param name="current" />
|
|
|
|
<xsl:if test="count($current/section) > 0 or
|
|
count($current/directivesynopsis) > 0">
|
|
&lf;&tab;&tab;
|
|
|
|
&ul.start; &lf;&tab;&tab;
|
|
|
|
<!-- sections -->
|
|
<xsl:for-each select="$current/section">
|
|
&li.start;
|
|
|
|
<xsl:call-template name="object">
|
|
<xsl:with-param name="name" select="normalize-space(title)" />
|
|
<xsl:with-param name="href">
|
|
<xsl:if test="@id">
|
|
<xsl:value-of
|
|
select="concat('mod/', $current/name, '.html#', @id)" />
|
|
</xsl:if>
|
|
</xsl:with-param>
|
|
<xsl:with-param name="indent" select="'				'" />
|
|
</xsl:call-template>
|
|
|
|
&li.end; &lf;&tab;&tab;
|
|
</xsl:for-each>
|
|
|
|
<!-- directives within the current document -->
|
|
<xsl:for-each select="$current/directivesynopsis[not(@location)]">
|
|
<xsl:sort select="name" />
|
|
&li.start;
|
|
|
|
<xsl:call-template name="object">
|
|
<xsl:with-param name="name">
|
|
<xsl:if test="@type='section'"><</xsl:if>
|
|
<xsl:value-of select="name"/>
|
|
<xsl:if test="@type='section'">></xsl:if>
|
|
<xsl:choose>
|
|
<xsl:when test="$message[@id='directive']
|
|
/@replace-space-with">
|
|
<xsl:value-of select="$message[@id='directive']
|
|
/@replace-space-with" />
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:text> </xsl:text>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<xsl:value-of select="normalize-space($message[@id='directive'])" />
|
|
</xsl:with-param>
|
|
<xsl:with-param name="href"
|
|
select="concat('mod/', $current/name, '.html#',
|
|
translate(name, $uppercase, $lowercase))" />
|
|
<xsl:with-param name="indent" select="'				'" />
|
|
<xsl:with-param name="icon" select="$icon.directive" />
|
|
</xsl:call-template>
|
|
|
|
&li.end; &lf;&tab;&tab;
|
|
</xsl:for-each>
|
|
|
|
<!-- directives described elsewhere -->
|
|
<xsl:for-each select="$current/directivesynopsis[@location]">
|
|
<xsl:sort select="name" />
|
|
&li.start;
|
|
|
|
<xsl:call-template name="object">
|
|
<xsl:with-param name="name">
|
|
<xsl:if test="@type='section'"><</xsl:if>
|
|
<xsl:value-of select="name"/>
|
|
<xsl:if test="@type='section'">></xsl:if>
|
|
<xsl:choose>
|
|
<xsl:when test="$message[@id='directive']
|
|
/@replace-space-with">
|
|
<xsl:value-of select="$message[@id='directive']
|
|
/@replace-space-with" />
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:text> </xsl:text>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<xsl:value-of select="normalize-space($message[@id='directive'])" />
|
|
</xsl:with-param>
|
|
<xsl:with-param name="href"
|
|
select="concat('mod/', @location, '.html#',
|
|
translate(name, $uppercase, $lowercase))" />
|
|
<xsl:with-param name="indent" select="'				'" />
|
|
<xsl:with-param name="icon" select="$icon.commondirective" />
|
|
</xsl:call-template>
|
|
|
|
&li.end; &lf;&tab;&tab;
|
|
</xsl:for-each>
|
|
|
|
&ul.end; &lf;&tab;
|
|
</xsl:if> <!-- sections or directives present -->
|
|
</xsl:template>
|
|
<!-- /sections-and-directives -->
|
|
|
|
|
|
<!-- ==================================================================== -->
|
|
<!-- object -->
|
|
<!-- display an <object> and do some magic to select the right content -->
|
|
<!-- ==================================================================== -->
|
|
<xsl:template name="object">
|
|
<xsl:param name="name" select="'? unknown ?'" />
|
|
<xsl:param name="href" />
|
|
<xsl:param name="icon" select="$icon.section" />
|
|
<xsl:param name="indent" />
|
|
|
|
<xsl:variable name="href.offline">
|
|
<xsl:call-template name="helper.href.offline">
|
|
<xsl:with-param name="href" select="$href" />
|
|
</xsl:call-template>
|
|
</xsl:variable>
|
|
|
|
<!-- xml file is expected to have the same basename -->
|
|
<xsl:variable name="xml"
|
|
select="concat(substring-before($href.offline, '.html'), '.xml')" />
|
|
|
|
<xsl:text><object type="text/sitemap"></xsl:text>&lf;
|
|
<xsl:value-of select="$indent" />
|
|
|
|
<xsl:text><param name="Name" value="</xsl:text>
|
|
<xsl:call-template name="filter.attval">
|
|
<xsl:with-param name="text" select="$name" />
|
|
</xsl:call-template>
|
|
<xsl:text>"></xsl:text>&lf;
|
|
<xsl:value-of select="$indent" />
|
|
|
|
<xsl:if test="string-length($href.offline) > 0">
|
|
<xsl:text><param name="Local" value="</xsl:text>
|
|
<xsl:call-template name="filter.attval">
|
|
<xsl:with-param name="text" select="$href.offline" />
|
|
</xsl:call-template>
|
|
<xsl:text>"></xsl:text>&lf;
|
|
<xsl:value-of select="$indent" />
|
|
</xsl:if>
|
|
|
|
<xsl:text><param name="ImageNumber" value="</xsl:text>
|
|
<xsl:choose>
|
|
<xsl:when test="string-length($href.offline) > 0">
|
|
<xsl:choose>
|
|
<xsl:when test="contains($href, '#')">
|
|
<xsl:value-of select="$icon" />
|
|
</xsl:when>
|
|
<xsl:when test="$doclang='en' or
|
|
(not($xml = $not-exists) and
|
|
(document(document(concat($basedir, $xml))
|
|
/*/@metafile)
|
|
/metafile/variants/variant
|
|
[.=$doclang and not(@htmlonly='yes')]))">
|
|
<xsl:value-of select="$icon.document" />
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="$icon.document.not-translated" />
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="$icon.no-anchor" />
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
<xsl:text>"></xsl:text>&lf;
|
|
<xsl:value-of select="substring($indent, 2)" />
|
|
|
|
<xsl:text></object></xsl:text>
|
|
</xsl:template>
|
|
<!-- /object -->
|
|
|
|
|
|
<!-- ==================================================================== -->
|
|
<!-- folder -->
|
|
<!-- ==================================================================== -->
|
|
<xsl:template name="folder">
|
|
<xsl:param name="name" select="'? unknown ?'" />
|
|
|
|
<xsl:text><object type="text/sitemap"></xsl:text>&lf;&tab;&tab;
|
|
<xsl:text><param name="Name" value="</xsl:text>
|
|
<xsl:call-template name="filter.attval">
|
|
<xsl:with-param name="text" select="$name" />
|
|
</xsl:call-template>
|
|
<xsl:text>"></xsl:text>&lf;&tab;
|
|
<xsl:text></object></xsl:text>
|
|
</xsl:template>
|
|
<!-- /folder -->
|
|
|
|
|
|
<!-- ==================================================================== -->
|
|
<!-- helper.href.offline -->
|
|
<!-- change uri reference to work offline (/ -> /index.html) -->
|
|
<!-- ==================================================================== -->
|
|
<xsl:template name="helper.href.offline">
|
|
<xsl:param name="href" />
|
|
|
|
<xsl:choose>
|
|
<xsl:when test="string-length($href) = 0" />
|
|
<xsl:when test="contains($href, '#') and '/' = substring($href,
|
|
string-length(substring-before($href, '#')), 1)">
|
|
<xsl:value-of select="substring-before($href, '#')" />
|
|
<xsl:text>index.html#</xsl:text>
|
|
<xsl:value-of select="substring-after($href, '#')" />
|
|
</xsl:when>
|
|
<xsl:when test="substring($href, string-length($href), 1) = '/'">
|
|
<xsl:value-of select="$href" />
|
|
<xsl:text>index.html</xsl:text>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="$href" />
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
<!-- /helper.href.offline -->
|
|
|
|
|
|
<!-- ==================================================================== -->
|
|
<!-- filter.attval -->
|
|
<!-- escape special characters for being valid within an attribute -->
|
|
<!-- ==================================================================== -->
|
|
<xsl:template name="filter.attval">
|
|
<xsl:param name="text" />
|
|
|
|
<xsl:choose>
|
|
<xsl:when test="contains($text, '&')">
|
|
<xsl:call-template name="filter.attval.special">
|
|
<xsl:with-param name="text" select="substring-before($text, '&')" />
|
|
</xsl:call-template>
|
|
<xsl:text>&amp;</xsl:text>
|
|
<xsl:call-template name="filter.attval">
|
|
<xsl:with-param name="text" select="substring-after($text, '&')" />
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:call-template name="filter.attval.special">
|
|
<xsl:with-param name="text" select="$text" />
|
|
</xsl:call-template>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
<!-- /filter.attval -->
|
|
|
|
|
|
<!-- ==================================================================== -->
|
|
<!-- filter.attval.special -->
|
|
<!-- accompanying template of filter.attval -->
|
|
<!-- ==================================================================== -->
|
|
<xsl:template name="filter.attval.special">
|
|
<xsl:param name="text" />
|
|
|
|
<xsl:choose>
|
|
<xsl:when test="contains($text, '<')">
|
|
<xsl:value-of select="substring-before($text, '<')" />
|
|
<xsl:text>&lt;</xsl:text>
|
|
<xsl:call-template name="filter.attval.special">
|
|
<xsl:with-param name="text" select="substring-after($text, '<')" />
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:when test="contains($text, '>')">
|
|
<xsl:value-of select="substring-before($text, '>')" />
|
|
<xsl:text>&gt;</xsl:text>
|
|
<xsl:call-template name="filter.attval.special">
|
|
<xsl:with-param name="text" select="substring-after($text, '>')" />
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:when test="contains($text, '"')">
|
|
<xsl:value-of select="substring-before($text, '"')" />
|
|
<xsl:text>&quot;</xsl:text>
|
|
<xsl:call-template name="filter.attval.special">
|
|
<xsl:with-param name="text" select="substring-after($text, '"')" />
|
|
</xsl:call-template>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="$text" />
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:template>
|
|
<!-- /filter.attval.special -->
|
|
|
|
</xsl:stylesheet>
|