Display node names for bf:identifier children
[mp-xquery-moved-to-github.git] / bibframe / xsl / fullDisplay.xsl
1 <?xml version="1.0" encoding="utf-8"?>
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3                 xmlns:srw="http://www.loc.gov/zing/srw/"
4                 xmlns:sru="http://docs.oasis-open.org/ns/search-ws/sruResponse"
5                 xmlns:dc="http://www.loc.gov/zing/srw/dcschema/v1.0/"
6                 xmlns:zr="http://explain.z3950.org/dtd/2.0/"
7                 xmlns:diag="http://www.loc.gov/zing/srw/diagnostic/"
8                 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
9                 xmlns:bf="http://bibframe.org/vocab/"
10                 version="1.0">
11
12   <xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>
13
14   <xsl:template match="text()"/>
15
16   <xsl:template match="rdf:RDF">
17     <table>
18       <xsl:for-each select="bf:*">
19         <tr><td><b><xsl:value-of select="name(.)"/>:</b>
20         <xsl:variable name="n" select="@rdf:nodeID"/>
21         <xsl:if test="$n">
22           (<xsl:value-of select="$n"/>)
23         </xsl:if>
24         </td></tr>
25         <xsl:for-each select="*">
26           <xsl:variable name="lang" select="@xml:lang"/>
27           <xsl:if test="not($lang='x-bf-hashable')">
28             <xsl:variable name="resource" select="@rdf:resource"/>
29             <xsl:variable name="nodeid" select="@rdf:nodeID"/>
30             <tr>
31               <td/>
32               <td>
33                 <b><xsl:value-of select="name(.)"/>:</b>
34               </td>
35               <td/><td>
36               <xsl:choose>
37                 <xsl:when test="bf:Provider">
38                   <xsl:for-each select=".//bf:providerRole">
39                     <xsl:value-of select="."/><br/>
40                   </xsl:for-each>
41                   <xsl:for-each select=".//bf:providerName">
42                     <b>Name: </b><xsl:value-of select="."/><br/>
43                   </xsl:for-each>
44                   <xsl:for-each select=".//bf:providerPlace">
45                     <b>Place: </b><xsl:value-of select="."/><br/>
46                   </xsl:for-each>
47                   <xsl:for-each select=".//bf:providerDate">
48                     <xsl:value-of select="."/><br/>
49                   </xsl:for-each>
50                   <xsl:for-each select=".//bf:copyrightDate">
51                     <xsl:value-of select="."/><br/>
52                   </xsl:for-each>
53                 </xsl:when>
54                 <xsl:when test="$resource">
55                   <xsl:variable name="rvalue"
56                                 select="//*[@rdf:about=$resource]/*[1]"/>
57                   <xsl:choose>
58                     <xsl:when test="$rvalue">
59                       <xsl:value-of select="$rvalue"/>
60                     </xsl:when>
61                     <xsl:otherwise>
62                       <a>
63                         <xsl:attribute name="href">
64                           <xsl:value-of select="$resource"/>
65                         </xsl:attribute>
66                         <xsl:value-of select="$resource"/>
67                       </a>
68                     </xsl:otherwise>
69                   </xsl:choose>
70                 </xsl:when>
71                 <xsl:when test="$nodeid">
72                   <xsl:variable name="rvalue"
73                                 select="//*[@rdf:nodeID=$nodeid]/*[1]"/>
74                   <xsl:choose>
75                     <xsl:when test="$rvalue">
76                       <xsl:value-of select="$rvalue"/>
77                       (<xsl:value-of select="$nodeid"/>)
78                     </xsl:when>
79                     <xsl:otherwise>
80                       <xsl:value-of select="$nodeid"/>
81                     </xsl:otherwise>
82                   </xsl:choose>
83                 </xsl:when>
84                 <xsl:when test="bf:Identifier">
85                   <xsl:for-each select="bf:Identifier/*">
86                     <b>
87                       <xsl:value-of
88                           select="substring-after(name(.),'bf:identifier')"/>:
89                     </b>
90                     <xsl:value-of select="."/><br/>
91                   </xsl:for-each>
92                 </xsl:when>
93                 <xsl:otherwise>
94                   <xsl:value-of select="."/>
95                 </xsl:otherwise>
96               </xsl:choose>
97             </td>
98             </tr>
99           </xsl:if>
100         </xsl:for-each>
101       </xsl:for-each>
102     </table>
103   </xsl:template>
104
105   <xsl:template match="/">
106     <xsl:call-template name="html"/>
107   </xsl:template>
108
109   <xsl:template name="html">
110     <html>
111       <head>
112         <title>BIBFRAME Full Display</title>
113         <link href="css.css" rel="stylesheet"
114               type="text/css" media="screen, all"/>
115       </head>
116       <body>
117         <div class="body">
118           <xsl:apply-templates/>
119         </div>
120       </body>
121     </html>
122   </xsl:template>
123
124   <xsl:template match="srw:searchRetrieveResponse">
125     <h2>Search Results</h2>
126     <xsl:call-template name="diagnostic"/>
127     <xsl:call-template name="displaysearch"/>
128   </xsl:template>
129
130   <xsl:template name="diagnostic">
131     <xsl:for-each select="//diag:diagnostic">
132      <div class="diagnostic">
133         <!-- <xsl:value-of select="diag:uri"/> -->
134         <xsl:text> </xsl:text>
135         <xsl:value-of select="diag:message"/>
136         <xsl:text>: </xsl:text>
137         <xsl:value-of select="diag:details"/>
138       </div>
139     </xsl:for-each>
140   </xsl:template>
141
142   <xsl:template name="displaysearch">
143     <div class="searchresults">
144       <xsl:for-each select="srw:numberOfRecords">
145         <h4>
146           <xsl:text>Number of Records: </xsl:text>
147           <xsl:value-of select="."/>
148         </h4>
149       </xsl:for-each>
150       <xsl:for-each select="srw:records">
151         <xsl:for-each select="srw:record">
152           <div class="record">
153             <h4>
154               <xsl:text>Record </xsl:text>
155               <xsl:value-of select="srw:recordPosition"/>
156             </h4>
157             <p>
158               <xsl:if test="srw:recordPacking='string'">
159                 <pre>
160                   <xsl:value-of select="srw:recordData"/>
161                 </pre>
162               </xsl:if>
163               <xsl:if test="srw:recordPacking='xml'">
164                 <xsl:choose>
165                   <xsl:when test="srw:recordSchema='marcxml'">
166                     <xsl:text>MARCXML</xsl:text>
167                   </xsl:when>
168                   <xsl:when test="srw:recordSchema='bibframe'">
169                     <xsl:apply-templates select="srw:recordData"/>
170                   </xsl:when>
171                 </xsl:choose>
172               </xsl:if>
173
174               <form name="rawlink" method="get">
175                 <input type="hidden" name="version">
176                   <xsl:attribute name="value">
177                     <xsl:value-of
178                         select="//srw:echoedSearchRetrieveRequest/srw:version"/>
179                   </xsl:attribute>
180                 </input>
181                 <input type="hidden" name="operation" value="searchRetrieve"/>
182                 <input type="hidden" name="query">
183                   <xsl:attribute name="value">
184                     <xsl:value-of
185                         select="//srw:echoedSearchRetrieveRequest/srw:query"/>
186                   </xsl:attribute>
187                 </input>
188                 <input type="hidden" name="recordPacking">
189                   <xsl:attribute name="value">
190                     <xsl:value-of select="srw:recordPacking"/>
191                   </xsl:attribute>
192                 </input>
193                 <input type="hidden" name="recordSchema">
194                   <xsl:attribute name="value">
195                     <xsl:value-of select="srw:recordSchema"/>
196                   </xsl:attribute>
197                 </input>
198                 <input type="hidden" name="startRecord">
199                   <xsl:attribute name="value">
200                     <xsl:value-of select="srw:recordPosition"/>
201                   </xsl:attribute>
202                 </input>
203                 <input type="hidden" name="maximumRecords" value="1"/>
204                 <input type="submit">
205                   <xsl:attribute name="value">
206                     <xsl:text>Raw Record </xsl:text>
207                     <xsl:value-of select="srw:recordPosition"/>
208                   </xsl:attribute>
209                 </input>
210               </form>
211             </p>
212           </div>
213         </xsl:for-each>
214       </xsl:for-each>
215     </div>
216   </xsl:template>
217
218 </xsl:stylesheet>