diff options
| author | Gabor Kovesdan <gabor@FreeBSD.org> | 2012-10-01 11:56:00 +0000 |
|---|---|---|
| committer | Gabor Kovesdan <gabor@FreeBSD.org> | 2012-10-01 11:56:00 +0000 |
| commit | 77d737ee88c7ac14aead1dd70dafe270a2624ef0 (patch) | |
| tree | 6c394d8308f5374809b0162fc0be16c6eff713f8 /share/xml/mirrors-master.xsl | |
| parent | b4346b9b2dfe86a97907573086dff096850dcb1d (diff) | |
- Rename the share/sgml directories to share/xml
- Fix build errors from the next change
Approved by: doceng (implicit)
Notes
svn path=/head/; revision=39632
Diffstat (limited to 'share/xml/mirrors-master.xsl')
| -rw-r--r-- | share/xml/mirrors-master.xsl | 261 |
1 files changed, 261 insertions, 0 deletions
diff --git a/share/xml/mirrors-master.xsl b/share/xml/mirrors-master.xsl new file mode 100644 index 0000000000..4eed64c5a1 --- /dev/null +++ b/share/xml/mirrors-master.xsl @@ -0,0 +1,261 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!-- $FreeBSD$ --> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> + + <xsl:output type="xml" encoding="iso-8859-1" + omit-xml-declaration="yes" + indent="yes"/> + + <!-- these params should be externally bound. The values + here are not used actually --> + <xsl:param name="type" select="''" /> + <xsl:param name="proto" select="''" /> + <xsl:param name="target" select="''" /> + + <xsl:param name="mirrors-docbook-country-anchor-id" select="translate($target, '/.', '--')" /> + + <xsl:variable name="date"> + <xsl:value-of xmlns:cvs="http://www.FreeBSD.org/XML/CVS" + select="normalize-space(//cvs:keyword[@name='freebsd'])"/> + </xsl:variable> + + <!-- + templates available: + + * "mirrors-lastmodified" + * "mirrors-docbook-contact" + * "mirrors-docbook-country-index-all" + * "mirrors-docbook-variablelist" + * "mirrors-docbook-itemizedlist" + --> + + <xsl:template match="/"> + <xsl:choose> + <xsl:when test="$target = 'handbook/mirrors/chapter.xml'"> + <xsl:call-template name="mirrors-docbook-country-index-all" /> + <para>(<xsl:call-template name="mirrors-lastmodified" />)</para> + <xsl:call-template name="mirrors-docbook-variablelist" /> + </xsl:when> + <xsl:when test="$target = 'handbook/eresources/chapter.xml'"> + <xsl:call-template name="mirrors-docbook-country-index-all" /> + <para>(<xsl:call-template name="mirrors-lastmodified" />)</para> + <xsl:call-template name="mirrors-docbook-itemizedlist" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="'*** processing error ***'" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- template: "mirrors-docbook-contact" --> + + <xsl:template name="mirrors-docbook-contact"> + <xsl:param name="email" select="'someone@somewhere'"/> + + <para>In case of problems, please contact the hostmaster + <email><xsl:value-of select="$email" /></email> for this domain.</para> + </xsl:template> + + <!-- template: "mirrors-lastmodified" --> + + <xsl:template name="mirrors-lastmodified"> + <xsl:text>as of </xsl:text> + <xsl:call-template name="mirrors-lastmodified-utc" /> + </xsl:template> + + <!-- template: "mirrors-docbook-country-index-all" --> + + <xsl:template name="mirrors-docbook-country-index-all"> + <para> + <xsl:for-each select="mirrors/entry[country/@role = 'primary' + and host[@type = $type]]"> + <xsl:call-template name="mirrors-docbook-country-index"> + <xsl:with-param name="mirrors-docbook-country-index-without-period" select="'true'" /> + </xsl:call-template> + </xsl:for-each> + + <xsl:for-each select="mirrors/entry[(not(country/@role) or country/@role != 'primary') and + host[@type = $type]]"> + <xsl:sort select="country/@sortkey" data-type="number"/> + <xsl:sort select="country" /> + + <xsl:call-template name="mirrors-docbook-country-index"> + <xsl:with-param name="mirrors-docbook-country-index-without-period" select="'false'" /> + </xsl:call-template> + </xsl:for-each> + </para> + </xsl:template> + + <xsl:template name="mirrors-docbook-country-index"> + <xsl:param name="mirrors-docbook-country-index-without-period" /> + <link> + <xsl:attribute name="linkend"> + <xsl:value-of select="concat($mirrors-docbook-country-anchor-id, '-', @id, '-', $type)" /> + </xsl:attribute> + <xsl:value-of select="country" /> + </link> + <xsl:choose> + <xsl:when test='$mirrors-docbook-country-index-without-period != "true" and + position() = last()'><xsl:text>.</xsl:text></xsl:when> + <xsl:otherwise><xsl:text>, </xsl:text></xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- template: "mirrors-docbook-variablelist" --> + + <xsl:template name="mirrors-docbook-variablelist"> + <variablelist> + <xsl:for-each select="mirrors/entry[country/@role = 'primary' and + host[@type = $type]]"> + <xsl:call-template name="mirrors-docbook-variablelist-entry" /> + </xsl:for-each> + + <xsl:for-each select="mirrors/entry[(not(country/@role) or country/@role != 'primary') and + host[@type = $type]]"> + <xsl:sort select="country/@sortkey" data-type="number"/> + <xsl:sort select="country" /> + + <xsl:call-template name="mirrors-docbook-variablelist-entry" /> + </xsl:for-each> + </variablelist> + </xsl:template> + + <xsl:template name="mirrors-docbook-variablelist-entry"> + <varlistentry> + <term> + <anchor> + <xsl:attribute name="id"> + <xsl:value-of select="concat($mirrors-docbook-country-anchor-id, '-', @id, '-', $type)" /> + </xsl:attribute> + </anchor> + <xsl:value-of select="country" /> + </term> + + <listitem> + <xsl:if test="$type = 'ftp' and email"> + <xsl:call-template name="mirrors-docbook-contact"> + <xsl:with-param name="email" select="email" /> + </xsl:call-template> + </xsl:if> + + <itemizedlist> + <xsl:for-each select="host[@type = $type]"> + <listitem> + <para> + <xsl:choose> + <xsl:when test="url[@proto = $proto]"> + <xsl:for-each select="url[@proto = $proto]"> + <ulink> + <xsl:attribute name="url"><xsl:value-of select="." /></xsl:attribute> + <xsl:value-of select="name" /> + </ulink> + </xsl:for-each> + + <xsl:value-of select="' (ftp'" /> + + <xsl:choose> + <xsl:when test="url[@proto != $proto]"> + <xsl:for-each select="url[@proto != $proto]"> + <xsl:value-of select="' / '" /> + <xsl:choose> + <xsl:when test=". != ''"> + <ulink> + <xsl:attribute name="url"><xsl:value-of select="." /></xsl:attribute> + <xsl:value-of select="@proto" /> + </ulink> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@proto" /> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:when> + </xsl:choose> + + <xsl:value-of select="') '" /> + </xsl:when> + + <xsl:otherwise> + <xsl:value-of select="name" /> + </xsl:otherwise> + </xsl:choose> + </para> + </listitem> + </xsl:for-each> + </itemizedlist> + </listitem> + </varlistentry> + </xsl:template> + + <!-- template: "mirrors-docbook-itemizedlist" --> + + <xsl:template name="mirrors-docbook-itemizedlist"> + <itemizedlist> + <xsl:for-each select="mirrors/entry[country/@role = 'primary' and + host[@type = $type]]"> + <xsl:call-template name="mirrors-docbook-itemizedlist-listitem" /> + </xsl:for-each> + + <xsl:for-each select="mirrors/entry[(not(country/@role) or country/@role != 'primary') and + host[@type = $type]]"> + <xsl:sort select="country/@sortkey" data-type="number"/> + <xsl:sort select="country" /> + + <xsl:call-template name="mirrors-docbook-itemizedlist-listitem" /> + </xsl:for-each> + </itemizedlist> + </xsl:template> + + <xsl:template name="mirrors-docbook-itemizedlist-listitem"> + <listitem> + <anchor> + <xsl:attribute name="id"> + <xsl:value-of select="concat($mirrors-docbook-country-anchor-id, '-', @id, '-', $type)" /> + </xsl:attribute> + </anchor> + + <para><xsl:value-of select="country" /></para> + + <itemizedlist> + <xsl:for-each select="host[@type = $type]"> + <listitem> + <para> + <xsl:choose> + <xsl:when test="url[@proto = $proto]"> + <xsl:for-each select="url[@proto = $proto]"> + <ulink> + <xsl:attribute name="url"><xsl:value-of select="." /></xsl:attribute> + <xsl:value-of select="name" /> + </ulink> + </xsl:for-each> + + <xsl:if test="url[ + contains(@proto, 'ftpv6') + or contains(@proto, 'httpv6') + or contains(@proto, 'rsyncv6')]"> + <xsl:text> (IPv6)</xsl:text> + </xsl:if> + </xsl:when> + + <xsl:otherwise> + <xsl:value-of select="name" /> + </xsl:otherwise> + </xsl:choose> + </para> + </listitem> + </xsl:for-each> + </itemizedlist> + </listitem> + </xsl:template> + + <!-- template: "mirrors-lastmodified-utc" --> + + <xsl:template name="mirrors-lastmodified-utc"> + <xsl:param name="basestr" select="substring-after(substring-after($date, ',v '), ' ')" /> + <xsl:param name="datestr" select="substring-before($basestr, ' ')" /> + <xsl:param name="timestr" select="substring-before(substring-after($basestr, ' '), ' ')" /> + + <xsl:value-of select="concat($datestr, ' ', $timestr, ' UTC')" /> + </xsl:template> +</xsl:stylesheet> |
