Statistics
| Revision:

root / tmp / org.txm.core / res / org / txm / xml / xsl / tei / bibtex / teitobib.xsl @ 187

History | View | Annotate | Download (4.6 kB)

1
<?xml version="1.0" encoding="utf-8"?>
2
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3
                xpath-default-namespace="http://www.tei-c.org/ns/1.0"
4
                version="2.0">
5
  <xsl:output method="text"/>
6

    
7
  <xsl:key name="B" match="biblStruct" use="1"/>
8
    <xsl:strip-space elements="*"/>
9

    
10
  <xsl:template match="/">
11

    
12
    <xsl:for-each select="key('B',1)">
13
      <xsl:variable name="type">
14
	<xsl:choose>
15
	  <xsl:when test="idno[@type='url']">
16
	    <xsl:text>techreport</xsl:text>
17
	  </xsl:when>
18
	  <xsl:when test="not(analytic)">
19
	    <xsl:text>book</xsl:text>
20
	  </xsl:when>
21
	  <xsl:when test="monogr/imprint/biblScope[@type='volume']">
22
	    <xsl:text>article</xsl:text>	    
23
	  </xsl:when>
24
	  <xsl:otherwise>
25
	    <xsl:text>incollection</xsl:text>	    
26
	  </xsl:otherwise>
27
	</xsl:choose>
28
      </xsl:variable>
29
      <xsl:text>@</xsl:text>
30
      <xsl:value-of select="$type"/>
31
      <xsl:text>{</xsl:text>
32
      <xsl:value-of select="@xml:id"/>
33
      <xsl:text>,&#10;</xsl:text>
34
      <xsl:variable name="all">
35
	<xsl:apply-templates/>
36
      </xsl:variable>
37
      <xsl:for-each select="tokenize($all,'@')">
38
	<xsl:if test="not(.='')">
39
	  <xsl:text>	</xsl:text>
40
	  <xsl:value-of select="."/>
41
	  <xsl:if test="not(position()=last())">,</xsl:if>
42
	  <xsl:text>&#10;</xsl:text>
43
	</xsl:if>
44
	</xsl:for-each>
45
      <xsl:text>}&#10;&#10;</xsl:text>
46
    </xsl:for-each>
47
  </xsl:template>
48

    
49
<xsl:template match="publisher">
50
  <xsl:text>@publisher={</xsl:text>
51
  <xsl:value-of select="."/>
52
  <xsl:text>}</xsl:text>
53
</xsl:template>
54

    
55
<xsl:template match="note">
56
  <xsl:text>@note={</xsl:text>
57
  <xsl:value-of select="."/>
58
  <xsl:text>}</xsl:text>
59
</xsl:template>
60

    
61
<xsl:template match="idno[@type='url']">
62
  <xsl:text>@url={</xsl:text>
63
  <xsl:value-of select="."/>
64
  <xsl:text>}</xsl:text>
65
</xsl:template>
66

    
67
<xsl:template match="pubPlace">
68
  <xsl:text>@address={</xsl:text>
69
  <xsl:value-of select="."/>
70
  <xsl:text>}</xsl:text>
71
</xsl:template>
72

    
73
<xsl:template match="date">
74
  <xsl:text>@year={</xsl:text>
75
  <xsl:value-of select="."/>
76
  <xsl:text>}</xsl:text>
77
</xsl:template>
78

    
79
<xsl:template match="series/title">
80
  <xsl:apply-templates/>
81
</xsl:template>
82

    
83
<xsl:template match="title">
84
  <xsl:variable name="name">
85
    <xsl:choose>
86
      <xsl:when test="@level='a' or not(ancestor::biblStruct/analytic)">title</xsl:when>
87
      <xsl:when test="@level='j' or parent::monogr/imprint/biblScope[@type='volume']">journal</xsl:when>
88
      <xsl:when test="@level='m' or parent::monogr">booktitle</xsl:when>
89
      <xsl:when test="@level='s'">series</xsl:when>
90
      <xsl:otherwise>title</xsl:otherwise>
91
    </xsl:choose>
92
  </xsl:variable>
93
  <xsl:text>@</xsl:text>
94
  <xsl:value-of select="$name"/>
95
  <xsl:text>={{</xsl:text>
96
  <xsl:apply-templates/>
97
  <xsl:text>}}</xsl:text>
98
</xsl:template>
99

    
100
<xsl:template match="q">
101
  <xsl:text>``</xsl:text>
102
  <xsl:apply-templates/>
103
  <xsl:text>''</xsl:text>
104
</xsl:template>
105

    
106
<xsl:template match="series">
107
  <xsl:text>@type={</xsl:text>
108
  <xsl:apply-templates/>
109
  <xsl:text>}</xsl:text>
110
</xsl:template>
111

    
112
<xsl:template match="biblScope[@type='pages']">
113
  <xsl:text>@pages={</xsl:text>
114
  <xsl:apply-templates/>
115
  <xsl:text>}</xsl:text>
116
</xsl:template>
117

    
118
<xsl:template match="biblScope[@type='volume']">
119
  <xsl:text>@volume={</xsl:text>
120
  <xsl:apply-templates/>
121
  <xsl:text>}</xsl:text>
122
</xsl:template>
123

    
124
<xsl:template match="biblScope[@type='issue']">
125
  <xsl:text>@issue={</xsl:text>
126
  <xsl:apply-templates/>
127
  <xsl:text>}</xsl:text>
128
</xsl:template>
129

    
130
<xsl:template match="edition">
131
  <xsl:text>@edition={</xsl:text>
132
  <xsl:apply-templates/>
133
  <xsl:text>}</xsl:text>
134
</xsl:template>
135

    
136
<xsl:template match="editor">
137
  <xsl:if test="not(preceding-sibling::editor)">
138
    <xsl:text>@editor={</xsl:text>
139
    <xsl:for-each select="../editor">
140
      <xsl:choose>
141
	<xsl:when test="forename and surname">
142
	  <xsl:value-of select="forename"/>
143
	  <xsl:text> </xsl:text>
144
	  <xsl:value-of select="surname"/>
145
	</xsl:when>
146
	<xsl:otherwise>
147
	  <xsl:apply-templates/>
148
	</xsl:otherwise>
149
      </xsl:choose>
150
      <xsl:if test="following-sibling::editor"> and </xsl:if>
151
    </xsl:for-each>
152
    <xsl:text>}</xsl:text>
153
  </xsl:if>
154
</xsl:template>
155

    
156
<xsl:template match="author">
157
  <xsl:if test="not(preceding-sibling::author)">
158
    <xsl:text>@author={</xsl:text>
159
    <xsl:for-each select="../author">
160
      <xsl:choose>
161
	<xsl:when test="forename and surname">
162
	  <xsl:value-of select="forename"/>
163
	  <xsl:text> </xsl:text>
164
	  <xsl:value-of select="surname"/>
165
	</xsl:when>
166
	<xsl:otherwise>
167
	  <xsl:apply-templates/>
168
	</xsl:otherwise>
169
      </xsl:choose>
170
      <xsl:if test="following-sibling::author"> and </xsl:if>
171
    </xsl:for-each>
172
    <xsl:text>}</xsl:text>
173
  </xsl:if>
174
</xsl:template>
175

    
176
</xsl:stylesheet>