source: trunk/bibtexml2dbk.xsl @ 71

Last change on this file since 71 was 71, checked in by pinsard, 16 years ago

add bibtexml2dbk.xsl for bibtex handling (oups)

  • Property svn:keywords set to Id
File size: 5.9 KB
Line 
1<?xml version="1.0" encoding="iso-8859-1"?>
2<xsl:stylesheet
3version="1.0"
4xmlns:xl="http://www.w3.org/1999/xlink"
5xmlns:html="http://www.w3.org/1999/xhtml"
6xmlns:bibtex="http://bibtexml.sf.net/"
7xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
8
9<!--
10module :
11produce a DocBook 5 from a bibtexml file
12
13update :
14$Id$
15fplod 2008-05-16T14:32:48Z aedon.locean-ipsl.upmc.fr (Darwin)
16bug fix on bibioset
17fplod 2008-05-16T10:38:11Z aedon.locean-ipsl.upmc.fr (Darwin)
18add parameter order for firstname/surname order in bibtex file
19fplod 2008-05-15T13:43:34Z aedon.locean-ipsl.upmc.fr (Darwin)
20creation
21see external/bibtex2xml.py (which produce input of the file)
22updated with
23svn co https://bibtexml.svn.sourceforge.net/svnroot/bibtexml/trunk/bibtexml/import/
24note that https://bibtexml.svn.sourceforge.net/svnroot/bibtexml/trunk/bibtexconverter-j/src/net/sourceforge/bibtexml/xslt/bibxml2docbook.xsl produce a Docbook 4file and not DocBook 5 as superbib request.
25-->
26
27<xsl:output
28 method="xml"
29 indent="yes"
30 encoding="utf-8"
31 omit-xml-declaration="no"/>
32
33<xsl:template match="bibtex:file">
34<xsl:element name="bibliography">
35 <xsl:attribute name="version">5.0</xsl:attribute>
36 <xsl:attribute name="xmlns">http://docbook.org/ns/docbook</xsl:attribute>
37 <xsl:attribute name="xml:id"><xsl:value-of select="concat('bib',$project,'ref')"/></xsl:attribute>
38 <xsl:attribute name="xml:lang"><xsl:value-of select="$lang"/></xsl:attribute>
39 <xsl:element name="info">
40  <xsl:element name="date">
41   <xsl:value-of select="$makedate"/>
42  </xsl:element>
43 </xsl:element>
44 <xsl:apply-templates select="bibtex:entry"/>
45</xsl:element>
46<xsl:message>
47www : You should have a look on firstname and surname to overiding on basic parsing
48</xsl:message>
49</xsl:template>
50
51<xsl:template match="bibtex:title">
52<xsl:element name="title">
53 <xsl:value-of select="."/>
54</xsl:element>
55</xsl:template>
56
57<xsl:template match="bibtex:entry">
58<xsl:element name="biblioentry">
59 <xsl:attribute name="xml:id"><xsl:value-of select="@id"/></xsl:attribute>
60 <xsl:apply-templates select="bibtex:article"/>
61<!--++ key-->
62</xsl:element>
63</xsl:template>
64
65<xsl:template match="bibtex:year">
66<xsl:element name="pubdate">
67 <xsl:value-of select="."/>
68</xsl:element>
69</xsl:template>
70
71<xsl:template match="bibtex:pages">
72<xsl:element name="pagenums">
73 <xsl:value-of select="."/>
74</xsl:element>
75</xsl:template>
76
77<xsl:template match="bibtex:volume">
78<xsl:element name="volumenum">
79 <xsl:value-of select="."/>
80</xsl:element>
81</xsl:template>
82
83<xsl:template match="bibtex:edition">
84<xsl:element name="edition">
85 <xsl:value-of select="."/>
86</xsl:element>
87</xsl:template>
88
89<xsl:template match="bibtex:journal">
90<xsl:element name="title">
91 <xsl:value-of select="."/>
92</xsl:element>
93</xsl:template>
94
95<xsl:template match="bibtex:article">
96 <xsl:apply-templates select="bibtex:title"/>
97 <xsl:apply-templates select="bibtex:author"/>
98 <xsl:apply-templates select="bibtex:doi"/>
99 <xsl:apply-templates select="bibtex:isbn"/>
100 <xsl:apply-templates select="bibtex:url"/>
101<xsl:element name="biblioset">
102 <xsl:attribute name="relation"><xsl:value-of select="'journal'"/></xsl:attribute>
103 <xsl:apply-templates select="bibtex:journal"/>
104 <xsl:apply-templates select="bibtex:publisher"/>
105 <xsl:apply-templates select="bibtex:organization"/>
106 <xsl:apply-templates select="bibtex:edition"/>
107 <xsl:apply-templates select="bibtex:volume"/>
108 <xsl:apply-templates select="bibtex:pages"/>
109 <xsl:apply-templates select="bibtex:year"/>
110</xsl:element>
111</xsl:template>
112
113<xsl:template match="bibtex:publisher|bibtex:organization">
114<xsl:element name="publisher">
115 <xsl:element name="publishername">
116  <xsl:value-of select="."/>
117 </xsl:element>
118</xsl:element>
119</xsl:template>
120
121<xsl:template match="bibtex:isbn">
122<xsl:element name="biblioid">
123 <xsl:attribute name="class"><xsl:value-of select="'isbn'"/></xsl:attribute>
124 <xsl:value-of select="."/>
125</xsl:element>
126</xsl:template>
127
128<xsl:template match="bibtex:doi">
129<xsl:element name="biblioid">
130 <xsl:attribute name="class"><xsl:value-of select="'doi'"/></xsl:attribute>
131 <xsl:value-of select="."/>
132</xsl:element>
133</xsl:template>
134
135<xsl:template match="bibtex:author">
136<xsl:choose>
137 <xsl:when test="count(child::bibtex:person) &gt; 0">
138  <xsl:element name="authorgroup">
139   <xsl:apply-templates select="child::bibtex:person"/>
140  </xsl:element>
141 </xsl:when>
142 <xsl:otherwise>
143  <xsl:element name="authorgroup">
144   <xsl:element name="author">
145    <xsl:element name="personname">
146     <xsl:call-template name="personname" select="."/>
147    </xsl:element>
148   </xsl:element>
149  </xsl:element>
150 </xsl:otherwise>
151</xsl:choose>
152</xsl:template>
153
154<xsl:template match="bibtex:person">
155<xsl:element name="author">
156 <xsl:element name="personname">
157  <xsl:call-template name="personname" select="."/>
158 </xsl:element>
159</xsl:element>
160</xsl:template>
161
162<xsl:template name="personname">
163<!--
164++extremely basic parsing of firstname and surname :
165the first blank is used as a delimiter.
166-->
167<xsl:choose>
168 <xsl:when test="$order = 'fs'">
169  <xsl:element name="firstname">
170   <xsl:value-of select="substring-before(.,' ')"/>
171  </xsl:element>
172  <xsl:element name="surname">
173   <xsl:value-of select="substring-after(.,' ')"/>
174  </xsl:element>
175 </xsl:when>
176 <xsl:when test="$order = 'sf'">
177  <xsl:element name="firstname">
178   <xsl:value-of select="substring-after(.,' ')"/>
179  </xsl:element>
180  <xsl:element name="surname">
181   <xsl:value-of select="substring-before(.,' ')"/>
182  </xsl:element>
183 </xsl:when>
184 <xsl:otherwise>
185  <xsl:message terminate="yes">
186  eee : unknow order value : <xsl:value-of select="$order"/>
187  </xsl:message>
188 </xsl:otherwise>
189</xsl:choose>
190</xsl:template>
191
192<xsl:template match="bibtex:url">
193<xsl:element name="biblioid">
194 <xsl:attribute name="uri"><xsl:value-of select="."/></xsl:attribute>
195 <xsl:value-of select="."/>
196</xsl:element>
197</xsl:template>
198
199<xsl:template match="bibtex:key">
200<!--++ keywords-->
201<xsl:element name="bibliomisc">
202 <xsl:attribute name="role"><xsl:value-of select="'key'"/></xsl:attribute>
203 <xsl:value-of select="."/>
204</xsl:element>
205</xsl:template>
206
207</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.