innreport-filter.xslt

Alexander Bartolich alexander.bartolich at gmx.at
Tue Sep 9 21:49:16 UTC 2008


<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
   - This is a filter to copy individual sections from innreport's HTML
   - files. Actually only news.notice.* are changed, index.html is not
   - modified.
   -
   - USAGE:
   -   xsltproc -novalid innreport-filter.xslt input.html
   -
   - (Note that option novalid is prefixed by two dashes)
   - Output is written to standard output, so you need to redirect that.
   -->
<xsl:stylesheet version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:xhtml="http://www.w3.org/1999/xhtml"
   xmlns="http://www.w3.org/1999/xhtml">

<xsl:output method="xml" indent="no"/>
<xsl:strip-space elements="*"/>

<!--
   - This is a list of section IDs. Only IDs quoted with + are copied.
   - Most nnrpd_XXX invade user's privacy.
   -->
<xsl:variable name="select_id" select="'
   +cnfsstat+
   +innd_connect+
   +innd_control+
   +innd_his+
   +innd_incoming_vol+
   +innd_misc_stat+
   +innd_perl+
   +innd_timer+
   +innfeed_connect+
   +innfeed_shrunk+
   +innfeed_timer+
   +innfeed_volume+
   +inn_flow+
   +inn_unwanted+
   +inn_unwanted_dist+
   +inn_unwanted_group+
   +inn_unwanted_unapp+
   -nnrpd_auth-
   +nnrpd_curious+
   -nnrpd_dom_groups-
   +nnrpd_group+
   -nnrpd_groups-
   +nnrpd_hierarchy+
   +nnrpd_no_permission+
   -nnrpd_resource-
   -nnrpd_timeout-
   +nnrpd_timer+
   -nnrpd_unrecognized-
   -nnrpd_unrecognized2-
   +nocem+
   +prog_type+
   -unrecognize-
'"/>

<!--
   - This is a list of section classes. Only classes quoted with + are
   - copied.
   -->
<xsl:variable name="select_class" select="'
   +ir-feedTotals+
   +ir-pageFooter+
   +ir-pageTitle+
'"/>

<!--
   - This low-priority rule copies any attribute and any node.
   -->
<xsl:template match="@*|node()"
   ><xsl:copy
     ><xsl:apply-templates select="@*|node()"
   /></xsl:copy
 ></xsl:template>

<!--
   - This template matches the list items in the table of contents.
   - Copy items only if the target ID is found in variable select_id.
   - Function substrings cuts off the leading # in attribute href.
   -->
<xsl:template match="/xhtml:html/xhtml:body/xhtml:ul/xhtml:li"
   ><xsl:if test="contains($select_id,
     concat('+', substring(xhtml:a/@href, 2), '+')
   )"><xsl:copy
       ><xsl:apply-templates select="@*|node()"
     /></xsl:copy
   ></xsl:if
 ></xsl:template>

<!--
   - This template matches report sections. Copy items if the ID is
   - found in variable select_id or the class is found in variable
   - select_class.
   -->
<xsl:template match="/xhtml:html/xhtml:body/xhtml:div"
   ><xsl:if test="
     contains($select_id, concat('+', @id, '+')) or
     contains($select_class, concat('+', @class, '+'))
   "><xsl:copy
       ><xsl:apply-templates select="@*|node()"
     /></xsl:copy
   ></xsl:if
 ></xsl:template>

<!--
   - Graph sections have no ID and are not part of the report section.
   - Instead we check whether the ID of the preceding report section
   - is found in variable select_id.
   -->
<xsl:template match="/xhtml:html/xhtml:body/xhtml:div[@class = 'ir-reportGraph']"
   ><xsl:variable name="prec" select="preceding-sibling::*"
   /><xsl:variable name="prec-id" select="$prec[count($prec)]/@id"
   /><xsl:if test="contains($select_id, concat('+', $prec-id, '+'))"
   ><xsl:copy
     ><xsl:apply-templates select="@*|node()"
     /></xsl:copy
   ></xsl:if
 ></xsl:template>

</xsl:stylesheet>



More information about the inn-patches mailing list