Hi Christian,
On Donnerstag, 8. März 2007, Christian Boltz wrote:
> [...]
> I want to mail some documentation about available updates to root ;-)
> and hope that this makes this mail less off-topic here *g* - I need a
> bit help from XML/XSLT experts which I expect to be in the doc team ;-)
>
> In short: I have written a xsl file that filters the output of
> zypp-checkpatches-wrapper to send an update notification mail to root.
>
> It basically works, however I have some problems with the whitespace.
Basically, it is a good idea to use xsl:text and xsl:strip-space and/or
xsl:preserve-space. Especially if you want exact control of your
whitespace. It can be a bit tricky to find the correct combination
though. :)
> [...]
>
> I'd like to have
> - no empty at the very beginning
> - "*** ERROR ***", "Update sources" and "=== ... ===" without leading
> whitespace
> - an empty line after the patch summary
> - less empty lines before "Total updates"
>
> Can someone help me with these issues?
See the attached XSLT file. It gives me the following output:
$ xsltproc patch2mail.xsl zypp.xml
*** ERROR ***
Some error during calculation happened
*** ERROR ***
Another error
Update sources:
ftp.gwdg.de
(http://ftp.gwdg.de/pub/suse/update/10.1)
irgendwo
(http://ftp.irgendwo.de)
=== java-1_5_0-sun- Patch 1438-0(security) ===
SUN Java packages prior 1.5.0 update 7 allow DOS.
Sun Java Runtime Environment (JRE) 1.5.0_6 and earlier, JDK
1.5.0_6 and earlier, and SDK 1.5.0_6 and earlier allows
remote attackers to cause a denial of service (disk
consumption) by using the Font.createFont function to
create temporary files of arbitrary size in the %temp%
directory (CVE-2006-2426).
=== java-1_5_0-sun- Patch 1438-0(security) ===
SUN Java packages prior 1.5.0 update 7 allow DOS.
Sun Java Runtime Environment (JRE) 1.5.0_6 and earlier, JDK
1.5.0_6 and earlier, and SDK 1.5.0_6 and earlier allows
remote attackers to cause a denial of service (disk
consumption) by using the Font.createFont function to
create temporary files of arbitrary size in the %temp%
directory (CVE-2006-2426).
Total updates: 2 (2 security)
__TOTAL__22__
Bye,
Tom
--
----------------------------------------------------------------------
SUSE LINUX Products GmbH >o) Documentation Team
Maxfeldstrasse 5 /\\ Technical Editor
90409 Nuernberg, Germany _\_v http://en.opensuse.org/Documentation_Team
<?xml version="1.0" encoding="ISO-8859-15"?>
<!--
Copyright (c)2007 Christian Boltz - www.cboltz.de
License: GPL v2 or any later version
-->
<xsl:stylesheet version="1.1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- <xsl:output method="text" encoding="ISO-8859-15" media-type="text/plain" /> -->
<xsl:strip-space elements="*"/>
<xsl:template match="/"><xsl:apply-templates /></xsl:template>
<xsl:template match="update-status">
<xsl:document href="-" method="text" ><xsl:apply-templates />
</xsl:document></xsl:template>
<!-- errors -->
<xsl:template match="errors"><xsl:apply-templates /></xsl:template>
<xsl:template match="errors/error">
<xsl:text>*** ERROR *** </xsl:text>
<xsl:apply-templates />
<xsl:text> </xsl:text>
</xsl:template>
<!-- update sources -->
<xsl:template match="update-sources">
<xsl:text>Update sources: </xsl:text>
<xsl:apply-templates />
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="update-sources/source">
<xsl:value-of select="@alias" />
(<xsl:value-of select="@url" />)
</xsl:template>
<!-- updates -->
<xsl:template match="update-list">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="update-list/update">
<xsl:text>=== </xsl:text>
<xsl:value-of select="@name" />
<xsl:text>- Patch </xsl:text>
<xsl:value-of select="@edition" />
<xsl:text>(</xsl:text>
<xsl:value-of select="@category" />
<xsl:text>) === </xsl:text>
<xsl:apply-templates />
<xsl:text> </xsl:text>
</xsl:template>
<xsl:template match="update-list/update/summary">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="update-list/update/description">
<xsl:text> </xsl:text>
<xsl:apply-templates />
</xsl:template>
<!--
<xsl:template match="update-list/update/source">Update source: <xsl:value-of select="@alias" /> (<xsl:value-of select="@url" />)</xsl:template>
-->
<!-- summary -->
<xsl:template match="update-summary">
<xsl:text>Total updates: </xsl:text>
<xsl:value-of select="@total" />
<xsl:text> (</xsl:text>
<xsl:value-of select="@security" />
<xsl:text> security) __TOTAL__</xsl:text>
<xsl:value-of select="@total" /><xsl:value-of select="@security" />
<xsl:text>__ </xsl:text>
</xsl:template>
<!-- end -->
</xsl:stylesheet>