This is the mail archive of the docbook-apps@lists.oasis-open.org mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RFCs Bibliography für DocBook


Under http://xml.resource.org/ you can get the RFC bibliography in XML
format.  Since I have some RFCs in my books bibliography I've written
some scripts to get the xml files and transform them into something
docbook like format.  I think that might be useful for others, so her
it goes.  First the script to get the files:

------------------- use axe here -------------------------
#!/bin/bash

> rfc-index.tmp
while read rfc ; do
   echo "http://xml.resource.org/public/rfc/bibxml/reference.RFC.$rfc.xml"; >> rfc-index.tmp
done << EOT
0768
0791
0792
0793
EOT

wget -O rfc-index.xml.tmp -i rfc-index.tmp

( echo "<references>";
sed -e "/<!DOCTYPE/d" \
    -e "/<?xml/g" ;
echo "</references>" ) < rfc-index.xml.tmp > rfc-index.xml

exit
------------------- use axe here -------------------------

And now the XSL style to transform the result into Docbook (not yet
verified):

------------------- use axe here -------------------------
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                version="1.0">

  <xsl:output method="xml"
    indent="yes"/>

  <xsl:strip-space elements="*"/>

  <xsl:template match="references">
    <bibliography>
      <title>RFC-Verzeichnis</title>
      <xsl:apply-templates/>
    </bibliography>
  </xsl:template>

  <xsl:template match="reference">
    <bibliomixed>
      <xsl:attribute name="if">
        <xsl:value-of select="translate(@anchor,'RFC','rfc')"/>
      </xsl:attribute>
      <xsl:apply-templates/>
    </bibliomixed>
  </xsl:template>

  <xsl:template match="title">
    <title><xsl:apply-templates/></title>,
  </xsl:template>

  <xsl:template name="process.author">
    <xsl:choose>
      <xsl:when test="@fullname!=''">
        <xsl:value-of select="@fullname"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="organization"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

  <xsl:template match="author[1]">
    <author><othername><xsl:call-template name="process.author"/>
    <xsl:for-each select="following-sibling::author">
      <xsl:text>, </xsl:text>
      <xsl:value-of select="@fullname"/>
    </xsl:for-each>
  </othername></author>,
  </xsl:template>

  <xsl:template match="date">
    <pubdate>
      <xsl:variable name="day">
        <xsl:value-of select="@day"/>
      </xsl:variable>
      <xsl:if test="$day != ''">
        <xsl:value-of select="@day"/>
        <xsl:text>. </xsl:text>
      </xsl:if>
      <xsl:value-of select="@month"/>
      <xsl:text> </xsl:text>
      <xsl:value-of select="@year"/>
    </pubdate>.
  </xsl:template>

  <xsl:template match="abstract|organization|address"/>

</xsl:stylesheet>
------------------- use axe here -------------------------

Comments are welcome.

Jochen

-- 
#include <~/.signature>: permission denied


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]