Adjust XSLT output transformation

This commit is contained in:
Sebastian Meyer 2017-10-12 12:38:45 +02:00
parent 0b63eb69bf
commit 5a23be1135
1 changed files with 410 additions and 353 deletions

View File

@ -22,30 +22,16 @@
<xsl:output method="html" /> <xsl:output method="html" />
<xsl:template name="style"> <xsl:template name="style">
td.value { * {
vertical-align: top; font-family: "Lucida Sans Unicode", sans-serif;
padding-left: 1em;
padding: 3px;
}
td.key {
background-color: #e0e0ff;
padding: 3px;
text-align: right;
border: 1px solid #c0c0c0;
white-space: nowrap;
font-weight: bold;
vertical-align: top;
}
.dcdata td.key {
background-color: #ffffe0;
} }
body { body {
margin: 1em 2em 1em 2em; margin: 1em 2em 1em 2em;
} }
h1, h1,
h2, h2,
h3 { h3,
font-family: sans-serif; h4 {
clear: left; clear: left;
} }
h1 { h1 {
@ -59,73 +45,81 @@ h3 {
margin-bottom: 0.3em; margin-bottom: 0.3em;
font-size: medium; font-size: medium;
} }
h4 {
margin-bottom: 0.2em;
font-size: small;
}
table {
margin-top: 10px;
}
td.key {
background-color: #e0e0ff;
padding: 3px;
text-align: right;
border: 1px solid #c0c0c0;
white-space: nowrap;
vertical-align: top;
}
td.value {
vertical-align: center;
padding-left: 1em;
padding: 3px;
}
.link { .link {
border: 1px outset #88f; border: 1px outset #88f;
background-color: #c0c0ff; background-color: #c0c0ff;
padding: 1px 4px 1px 4px; padding: 1px 4px;
font-size: 80%; font-size: 80%;
text-decoration: none; text-decoration: none;
font-weight: bold;
font-family: sans-serif;
color: black; color: black;
} }
.link:hover { .link:hover {
color: red; color: gray;
} }
.link:active { .link:active {
color: red; color: red;
border: 1px inset #88f; border: 1px inset #88f;
background-color: #a0a0df; background-color: #a0a0df;
} }
.oaiRecord,
.oaiRecordTitle {
background-color: #f0f0ff;
border-style: solid;
border-color: #d0d0d0;
}
h2.oaiRecordTitle {
background-color: #e0e0ff;
font-size: medium;
font-weight: bold;
padding: 10px;
border-width: 2px 2px 0px 2px;
margin: 0px;
}
.oaiRecord {
margin-bottom: 3em;
border-width: 2px;
padding: 10px;
}
.results { .results {
margin-bottom: 1.5em; margin-bottom: 1.5em;
} }
ul.quicklinks { div.quicklinks {
margin-top: 2px;
padding: 4px;
text-align: left;
border-bottom: 2px solid #ccc; border-bottom: 2px solid #ccc;
border-top: 2px solid #ccc; border-top: 2px solid #ccc;
}
ul {
margin: 2px 0;
padding: 4px;
text-align: left;
clear: left; clear: left;
} }
ul.quicklinks li { ul li {
font-size: 80%; font-size: 80%;
display: inline; display: inline;
list-style: none; list-style: none;
font-family: sans-serif;
} }
p.intro { ol {
padding: 0;
}
ol>li {
list-style: none;
padding: 0 5px 5px;
margin: 0 0 1em;
border: 1px solid #c0c0c0;
}
p {
margin: 0;
padding: 5px;
}
p.info {
font-size: 80%; font-size: 80%;
} }
<xsl:call-template name='xmlstyle' />
</xsl:template>
<xsl:template name="xmlstyle">
.xmlSource { .xmlSource {
font-size: 70%; font-size: 70%;
border: solid #c0c0a0 1px; border: solid #c0c0a0 1px;
background-color: #ffffe0; background-color: #ffffe0;
padding: 2em 2em 2em 0em; padding: 2em 2em 2em 0;
} }
.xmlBlock { .xmlBlock {
padding-left: 2em; padding-left: 2em;
@ -142,7 +136,11 @@ p.intro {
} }
</xsl:template> </xsl:template>
<xsl:variable name='verb' select="/oai:OAI-PMH/oai:request/@verb"/>
<xsl:variable name='metadataPrefix' select="/oai:OAI-PMH/oai:request/@metadataPrefix"/>
<xsl:variable name='identifier' select="/oai:OAI-PMH/oai:request/@identifier"/> <xsl:variable name='identifier' select="/oai:OAI-PMH/oai:request/@identifier"/>
<xsl:variable name='from' select="/oai:OAI-PMH/oai:request/@from"/>
<xsl:variable name='until' select="/oai:OAI-PMH/oai:request/@until"/>
<xsl:template match="/"> <xsl:template match="/">
<html> <html>
@ -153,18 +151,31 @@ p.intro {
<body> <body>
<h1>OAI-PMH 2.0 Request Results</h1> <h1>OAI-PMH 2.0 Request Results</h1>
<xsl:call-template name="quicklinks"/> <xsl:call-template name="quicklinks"/>
<p class="intro">You are viewing an HTML version of the XML OAI response. To see the underlying XML as it appears to any OAI harvester use your web browser's view source option or disable XSLT processing.</p>
<xsl:apply-templates select="/oai:OAI-PMH"/> <xsl:apply-templates select="/oai:OAI-PMH"/>
<xsl:call-template name="quicklinks"/> <xsl:call-template name="quicklinks"/>
<p class="info">You are viewing an HTML version of the XML OAI-PMH response. To see the underlying XML as it appears to any OAI-PMH harvester use your web browser's <em>view source</em> option or disable XSLT processing.</p>
<p class="info">This XSL script was originally written by Christopher Gutteridge at <a href="https://www.southampton.ac.uk/">University of Southampton</a> for the <a href="http://www.eprints.org/">EPrints</a> project and was later adapted by Sebastian Meyer at <a href="http://www.opencultureconsulting.com/">Open Culture Consulting</a> to be more generally applicable to other OAI-PMH interfaces. It is available on <a href="https://github.com/opencultureconsulting/oai_pmh">GitHub</a> for free!</p>
</body> </body>
</html> </html>
</xsl:template> </xsl:template>
<xsl:template name="quicklinks"> <xsl:template name="quicklinks">
<ul class="quicklinks"> <div class="quicklinks">
<li><a href="?verb=Identify">Identify</a> or </li> <ul>
<li><a href="?verb=ListMetadataFormats">ListMetadataFormats</a></li> <li>&#187; <a class="link" href="?verb=Identify">Identify</a></li>
<li>&#187; <a class="link" href="?verb=ListMetadataFormats">ListMetadataFormats</a></li>
<xsl:if test="$identifier">
<li>&#187; <a class="link" href="?verb=ListMetadataFormats&amp;identifier={$identifier}">ListMetadataFormats (<em><xsl:value-of select="$identifier"/></em>)</a></li>
</xsl:if>
<xsl:if test="$metadataPrefix">
<li>&#187; <a class="link" href="?verb=ListIdentifiers&amp;metadataPrefix={$metadataPrefix}">ListIdentifiers (<em><xsl:value-of select="$metadataPrefix"/></em>)</a></li>
<li>&#187; <a class="link" href="?verb=ListRecords&amp;metadataPrefix={$metadataPrefix}">ListRecords (<em><xsl:value-of select="$metadataPrefix"/></em>)</a></li>
<xsl:if test="$identifier">
<li>&#187; <a class="link" href="?verb=GetRecord&amp;metadataPrefix={$metadataPrefix}&amp;identifier={$identifier}">GetRecord (<em><xsl:value-of select="$identifier"/></em> in <em><xsl:value-of select="$metadataPrefix"/></em>)</a></li>
</xsl:if>
</xsl:if>
</ul> </ul>
</div>
</xsl:template> </xsl:template>
<xsl:template match="/oai:OAI-PMH"> <xsl:template match="/oai:OAI-PMH">
@ -173,23 +184,32 @@ p.intro {
<td class="value"><xsl:value-of select="oai:responseDate"/></td></tr> <td class="value"><xsl:value-of select="oai:responseDate"/></td></tr>
<tr><td class="key">Request URL</td> <tr><td class="key">Request URL</td>
<td class="value"><xsl:value-of select="oai:request"/></td></tr> <td class="value"><xsl:value-of select="oai:request"/></td></tr>
<tr><td class="key">Request Parameters</td>
<td class="value">
<xsl:if test="$verb">verb = <em><xsl:value-of select="$verb"/></em><br/></xsl:if>
<xsl:if test="$metadataPrefix">metadataPrefix = <em><xsl:value-of select="$metadataPrefix"/></em><br/></xsl:if>
<xsl:if test="$identifier">identifier = <em><xsl:value-of select="$identifier"/></em><br/></xsl:if>
<xsl:if test="$from">from = <em><xsl:value-of select="$from"/></em><br/></xsl:if>
<xsl:if test="$until">until = <em><xsl:value-of select="$until"/></em><br/></xsl:if>
</td></tr>
</table> </table>
<xsl:choose> <xsl:choose>
<xsl:when test="oai:error"> <xsl:when test="oai:error">
<h2>OAI Error</h2> <h2>Error</h2>
<p>The request could not be completed due to the following error.</p> <p>The request could not be completed due to the following error.</p>
<div class="results"> <div class="results">
<xsl:apply-templates select="oai:error"/> <xsl:apply-templates select="oai:error"/>
</div> </div>
</xsl:when> </xsl:when>
<xsl:otherwise> <xsl:otherwise>
<p>Request was of type <xsl:value-of select="oai:request/@verb"/>.</p> <h2><xsl:value-of select="$verb"/></h2>
<p>The request was completed with the following results.</p>
<div class="results"> <div class="results">
<xsl:apply-templates select="oai:Identify" /> <xsl:apply-templates select="oai:Identify" />
<xsl:apply-templates select="oai:GetRecord"/>
<xsl:apply-templates select="oai:ListRecords"/>
<xsl:apply-templates select="oai:ListMetadataFormats"/> <xsl:apply-templates select="oai:ListMetadataFormats"/>
<xsl:apply-templates select="oai:ListIdentifiers"/> <xsl:apply-templates select="oai:ListIdentifiers"/>
<xsl:apply-templates select="oai:ListRecords"/>
<xsl:apply-templates select="oai:GetRecord"/>
</div> </div>
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
@ -198,7 +218,7 @@ p.intro {
<!-- <!--
Error Error
--> -->
<xsl:template match="/oai:OAI-PMH/oai:error"> <xsl:template match="oai:error">
<table class="values"> <table class="values">
<tr><td class="key">Error Code</td> <tr><td class="key">Error Code</td>
<td class="value"><xsl:value-of select="@code"/></td></tr> <td class="value"><xsl:value-of select="@code"/></td></tr>
@ -209,13 +229,15 @@ p.intro {
<!-- <!--
Identify Identify
--> -->
<xsl:template match="/oai:OAI-PMH/oai:Identify"> <xsl:template match="oai:Identify">
<h2>Repository</h2> <ol>
<li>
<h3>Repository Identification</h3>
<table class="values"> <table class="values">
<tr><td class="key">Name</td> <tr><td class="key">Name</td>
<td class="value"><xsl:value-of select="oai:repositoryName"/></td></tr> <td class="value"><xsl:value-of select="oai:repositoryName"/></td></tr>
<tr><td class="key">Base URL</td> <tr><td class="key">Base URL</td>
<td class="value"><xsl:value-of select="oai:baseURL"/></td></tr> <td class="value"><a href="{oai:baseURL}"><xsl:value-of select="oai:baseURL"/></a></td></tr>
<tr><td class="key">Protocol Version</td> <tr><td class="key">Protocol Version</td>
<td class="value"><xsl:value-of select="oai:protocolVersion"/></td></tr> <td class="value"><xsl:value-of select="oai:protocolVersion"/></td></tr>
<tr><td class="key">Earliest Datestamp</td> <tr><td class="key">Earliest Datestamp</td>
@ -224,36 +246,11 @@ p.intro {
<td class="value"><xsl:value-of select="oai:deletedRecord"/></td></tr> <td class="value"><xsl:value-of select="oai:deletedRecord"/></td></tr>
<tr><td class="key">Granularity</td> <tr><td class="key">Granularity</td>
<td class="value"><xsl:value-of select="oai:granularity"/></td></tr> <td class="value"><xsl:value-of select="oai:granularity"/></td></tr>
<xsl:apply-templates select="oai:adminEmail"/> <tr><td class="key">Administrative Email</td>
<td class="value"><a href="mailto:{oai:adminEmail}"><xsl:value-of select="oai:adminEmail"/></a></td></tr>
</table> </table>
</xsl:template> </li>
</ol>
<xsl:template match="/oai:OAI-PMH/oai:Identify/oai:adminEmail">
<tr><td class="key">Admin Email</td>
<td class="value"><a href="mailto:{.}"><xsl:value-of select="."/></a></td></tr>
</xsl:template>
<!--
GetRecord
-->
<xsl:template match="oai:GetRecord">
<xsl:apply-templates select="oai:record" />
</xsl:template>
<!--
ListRecords
-->
<xsl:template match="oai:ListRecords">
<xsl:apply-templates select="oai:record" />
<xsl:apply-templates select="oai:resumptionToken" />
</xsl:template>
<!--
ListIdentifiers
-->
<xsl:template match="oai:ListIdentifiers">
<xsl:apply-templates select="oai:record" />
<xsl:apply-templates select="oai:resumptionToken" />
</xsl:template> </xsl:template>
<!-- <!--
@ -262,66 +259,121 @@ p.intro {
<xsl:template match="oai:ListMetadataFormats"> <xsl:template match="oai:ListMetadataFormats">
<xsl:choose> <xsl:choose>
<xsl:when test="$identifier"> <xsl:when test="$identifier">
<p>This is a list of metadata formats available for the record "<xsl:value-of select='$identifier' />". Use these links to view the metadata: <xsl:apply-templates select="oai:metadataFormat/oai:metadataPrefix" /></p> <p class="info">This is a list of metadata formats available for the record <em><xsl:value-of select="$identifier"/></em>.</p>
</xsl:when> </xsl:when>
<xsl:otherwise> <xsl:otherwise>
<p>This is a list of metadata formats available from this repository. Click on a format's prefix to get all available records' identifiers.</p> <p class="info">This is a list of metadata formats available from this repository.</p>
</xsl:otherwise> </xsl:otherwise>
</xsl:choose> </xsl:choose>
<ol>
<xsl:apply-templates select="oai:metadataFormat"/> <xsl:apply-templates select="oai:metadataFormat"/>
</ol>
</xsl:template> </xsl:template>
<!-- <!--
Metadata Format Details Metadata Format Details
--> -->
<xsl:template match="oai:metadataFormat"> <xsl:template match="oai:metadataFormat">
<h2>Metadata Format</h2> <li>
<h3>Metadata Format <em><xsl:value-of select="oai:metadataPrefix"/></em></h3>
<ul>
<li>&#187; <a class="link" href="?verb=ListIdentifiers&amp;metadataPrefix={oai:metadataPrefix}">ListIdentifiers</a></li>
<li>&#187; <a class="link" href="?verb=ListRecords&amp;metadataPrefix={oai:metadataPrefix}">ListRecords</a></li>
<xsl:if test="$identifier"><li>&#187; <a class="link" href="?verb=GetRecord&amp;metadataPrefix={oai:metadataPrefix}&amp;identifier={$identifier}">GetRecord</a></li></xsl:if>
</ul>
<table class="values"> <table class="values">
<tr><td class="key">Prefix</td> <tr><td class="key">Prefix</td>
<td class="value"><a class="link" href="?verb=ListIdentifiers&amp;metadataPrefix={oai:metadataPrefix}"><xsl:value-of select="oai:metadataPrefix"/></a></td></tr> <td class="value"><xsl:value-of select="oai:metadataPrefix"/></td></tr>
<tr><td class="key">Namespace</td> <tr><td class="key">Namespace</td>
<td class="value"><xsl:value-of select="oai:metadataNamespace"/></td></tr> <td class="value"><xsl:value-of select="oai:metadataNamespace"/></td></tr>
<tr><td class="key">Schema</td> <tr><td class="key">Schema</td>
<td class="value"><a href="{oai:schema}"><xsl:value-of select="oai:schema"/></a></td></tr> <td class="value"><a href="{oai:schema}"><xsl:value-of select="oai:schema"/></a></td></tr>
</table> </table>
</li>
</xsl:template> </xsl:template>
<xsl:template match="oai:metadataPrefix"> <!--
<xsl:text> </xsl:text><a class="link" href="?verb=GetRecord&amp;metadataPrefix={.}&amp;identifier={$identifier}"><xsl:value-of select='.' /></a> ListIdentifiers
-->
<xsl:template match="oai:ListIdentifiers">
<p class="info">This is a list of records' identifiers available for the metadata format <em><xsl:value-of select="$metadataPrefix"/></em>.</p>
<ol>
<xsl:apply-templates select="oai:header" />
</ol>
<xsl:apply-templates select="oai:resumptionToken" />
</xsl:template>
<xsl:template match="oai:ListIdentifiers/oai:header">
<li>
<h3>Record Header <em><xsl:value-of select="oai:identifier"/></em></h3>
<ul>
<li>&#187; <a class="link" href="?verb=ListMetadataFormats&amp;identifier={oai:identifier}">ListMetadataFormats</a></li>
<li>&#187; <a class="link" href="?verb=GetRecord&amp;metadataPrefix={$metadataPrefix}&amp;identifier={oai:identifier}">GetRecord</a></li>
</ul>
<table class="values">
<tr><td class="key">Identifier</td>
<td class="value"><xsl:value-of select="oai:identifier"/></td></tr>
<tr><td class="key">Datestamp</td>
<td class="value"><xsl:value-of select="oai:datestamp"/></td></tr>
<tr><td class="key">Deleted</td>
<td class="value">
<xsl:choose>
<xsl:when test="@status = 'deleted'">yes</xsl:when>
<xsl:otherwise>no</xsl:otherwise>
</xsl:choose>
</td></tr>
</table>
</li>
</xsl:template>
<!--
ListRecords
-->
<xsl:template match="oai:ListRecords">
<p class="info">This is a list of records available for the metadata format <em><xsl:value-of select="$metadataPrefix"/></em>.</p>
<ol>
<xsl:apply-templates select="oai:record" />
</ol>
<xsl:apply-templates select="oai:resumptionToken" />
</xsl:template>
<!--
GetRecord
-->
<xsl:template match="oai:GetRecord">
<p class="info">This is the record <em><xsl:value-of select="$identifier"/></em> in the metadata format <em><xsl:value-of select="$metadataPrefix"/></em>.</p>
<ol>
<xsl:apply-templates select="oai:record" />
</ol>
</xsl:template> </xsl:template>
<!-- <!--
Record Details Record Details
--> -->
<xsl:template match="oai:record"> <xsl:template match="oai:record">
<h2 class="oaiRecordTitle">OAI Record: <xsl:value-of select="oai:header/oai:identifier"/></h2> <li>
<div class="oaiRecord">
<xsl:apply-templates select="oai:header" /> <xsl:apply-templates select="oai:header" />
<xsl:apply-templates select="oai:metadata" /> <xsl:apply-templates select="oai:metadata" />
</div> </li>
</xsl:template> </xsl:template>
<xsl:template match="oai:header"> <xsl:template match="oai:record/oai:header">
<h3>OAI Record Header</h3> <h3>Record <em><xsl:value-of select="oai:identifier"/></em></h3>
<ul>
<li>&#187; <a class="link" href="?verb=ListMetadataFormats&amp;identifier={oai:identifier}">ListMetadataFormats</a></li>
<xsl:if test="$verb != 'GetRecord'"><li>&#187; <a class="link" href="?verb=GetRecord&amp;metadataPrefix={$metadataPrefix}&amp;identifier={oai:identifier}">GetRecord</a></li></xsl:if>
</ul>
<table class="values"> <table class="values">
<tr><td class="key">OAI Identifier</td> <tr><td class="key">Identifier</td>
<td class="value"> <td class="value"><xsl:value-of select="oai:identifier"/></td></tr>
<xsl:value-of select="oai:identifier"/>
<xsl:text> </xsl:text><a class="link" href="?verb=ListMetadataFormats&amp;identifier={oai:identifier}">available formats</a>
</td></tr>
<tr><td class="key">Datestamp</td> <tr><td class="key">Datestamp</td>
<td class="value"><xsl:value-of select="oai:datestamp"/></td></tr> <td class="value"><xsl:value-of select="oai:datestamp"/></td></tr>
</table> </table>
<xsl:if test="@status='deleted'"> <xsl:if test="@status = 'deleted'"><h4>This record has been deleted.</h4></xsl:if>
<p>This record has been deleted.</p>
</xsl:if>
</xsl:template> </xsl:template>
<xsl:template match="oai:metadata"> <xsl:template match="oai:metadata">
&#160;
<div class="metadata">
<xsl:apply-templates select="*" /> <xsl:apply-templates select="*" />
</div>
</xsl:template> </xsl:template>
<!-- <!--
@ -329,6 +381,9 @@ p.intro {
--> -->
<xsl:template match="oai:resumptionToken"> <xsl:template match="oai:resumptionToken">
<p>There are more results.</p> <p>There are more results.</p>
<ul>
<li>&#187; <a class="link" href="?verb={$verb}&amp;resumptionToken={.}">Resume</a></li>
</ul>
<table class="values"> <table class="values">
<tr><td class="key">Submitted Records</td> <tr><td class="key">Submitted Records</td>
<td class="value"><xsl:value-of select="@cursor"/></td></tr> <td class="value"><xsl:value-of select="@cursor"/></td></tr>
@ -337,9 +392,7 @@ p.intro {
<tr><td class="key">Expiration Datestamp</td> <tr><td class="key">Expiration Datestamp</td>
<td class="value"><xsl:value-of select="@expirationDate"/></td></tr> <td class="value"><xsl:value-of select="@expirationDate"/></td></tr>
<tr><td class="key">Resumption Token</td> <tr><td class="key">Resumption Token</td>
<td class="value"><xsl:value-of select="."/> <td class="value"><xsl:value-of select="."/></td></tr>
<xsl:text> </xsl:text>
<a class="link" href="?verb={/oai:OAI-PMH/oai:request/@verb}&amp;resumptionToken={.}">Resume</a></td></tr>
</table> </table>
</xsl:template> </xsl:template>
@ -347,7 +400,7 @@ p.intro {
Unknown Metadata Unknown Metadata
--> -->
<xsl:template match="oai:metadata/*" priority='-100'> <xsl:template match="oai:metadata/*" priority='-100'>
<h3>Unknown Metadata Format</h3> <h4>Metadata Format <em><xsl:value-of select="$metadataPrefix"/></em></h4>
<div class="xmlSource"> <div class="xmlSource">
<xsl:apply-templates select="." mode='xmlMarkup' /> <xsl:apply-templates select="." mode='xmlMarkup' />
</div> </div>
@ -357,63 +410,65 @@ p.intro {
DublinCore Metadata DublinCore Metadata
--> -->
<xsl:template match="oai_dc:dc" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/"> <xsl:template match="oai_dc:dc" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/">
<div class="dcdata"> <h4>Metadata Format <em>DublinCore</em></h4>
<h3>DublinCore Metadata</h3> <table>
<table class="dcdata">
<xsl:apply-templates select="*" /> <xsl:apply-templates select="*" />
</table> </table>
</div>
</xsl:template> </xsl:template>
<xsl:template match="dc:title" xmlns:dc="http://purl.org/dc/elements/1.1/"> <xsl:template match="dc:title" xmlns:dc="http://purl.org/dc/elements/1.1/">
<tr><td class="key">Title</td><td class="value"><xsl:value-of select="."/></td></tr></xsl:template> <tr><td class="key">Title</td><td class="value"><xsl:value-of select="."/></td></tr>
</xsl:template>
<xsl:template match="dc:creator" xmlns:dc="http://purl.org/dc/elements/1.1/"> <xsl:template match="dc:creator" xmlns:dc="http://purl.org/dc/elements/1.1/">
<tr><td class="key">Author or Creator</td><td class="value"><xsl:value-of select="."/></td></tr></xsl:template> <tr><td class="key">Author or Creator</td><td class="value"><xsl:value-of select="."/></td></tr>
</xsl:template>
<xsl:template match="dc:subject" xmlns:dc="http://purl.org/dc/elements/1.1/"> <xsl:template match="dc:subject" xmlns:dc="http://purl.org/dc/elements/1.1/">
<tr><td class="key">Subject and Keywords</td><td class="value"><xsl:value-of select="."/></td></tr></xsl:template> <tr><td class="key">Subject and Keywords</td><td class="value"><xsl:value-of select="."/></td></tr>
</xsl:template>
<xsl:template match="dc:description" xmlns:dc="http://purl.org/dc/elements/1.1/"> <xsl:template match="dc:description" xmlns:dc="http://purl.org/dc/elements/1.1/">
<tr><td class="key">Description</td><td class="value"><xsl:value-of select="."/></td></tr></xsl:template> <tr><td class="key">Description</td><td class="value"><xsl:value-of select="."/></td></tr>
</xsl:template>
<xsl:template match="dc:publisher" xmlns:dc="http://purl.org/dc/elements/1.1/"> <xsl:template match="dc:publisher" xmlns:dc="http://purl.org/dc/elements/1.1/">
<tr><td class="key">Publisher</td><td class="value"><xsl:value-of select="."/></td></tr></xsl:template> <tr><td class="key">Publisher</td><td class="value"><xsl:value-of select="."/></td></tr>
</xsl:template>
<xsl:template match="dc:contributor" xmlns:dc="http://purl.org/dc/elements/1.1/"> <xsl:template match="dc:contributor" xmlns:dc="http://purl.org/dc/elements/1.1/">
<tr><td class="key">Other Contributor</td><td class="value"><xsl:value-of select="."/></td></tr></xsl:template> <tr><td class="key">Other Contributor</td><td class="value"><xsl:value-of select="."/></td></tr>
</xsl:template>
<xsl:template match="dc:date" xmlns:dc="http://purl.org/dc/elements/1.1/"> <xsl:template match="dc:date" xmlns:dc="http://purl.org/dc/elements/1.1/">
<tr><td class="key">Date</td><td class="value"><xsl:value-of select="."/></td></tr></xsl:template> <tr><td class="key">Date</td><td class="value"><xsl:value-of select="."/></td></tr>
</xsl:template>
<xsl:template match="dc:type" xmlns:dc="http://purl.org/dc/elements/1.1/"> <xsl:template match="dc:type" xmlns:dc="http://purl.org/dc/elements/1.1/">
<tr><td class="key">Resource Type</td><td class="value"><xsl:value-of select="."/></td></tr></xsl:template> <tr><td class="key">Resource Type</td><td class="value"><xsl:value-of select="."/></td></tr>
</xsl:template>
<xsl:template match="dc:format" xmlns:dc="http://purl.org/dc/elements/1.1/"> <xsl:template match="dc:format" xmlns:dc="http://purl.org/dc/elements/1.1/">
<tr><td class="key">Format</td><td class="value"><xsl:value-of select="."/></td></tr></xsl:template> <tr><td class="key">Format</td><td class="value"><xsl:value-of select="."/></td></tr>
</xsl:template>
<xsl:template match="dc:identifier" xmlns:dc="http://purl.org/dc/elements/1.1/"> <xsl:template match="dc:identifier" xmlns:dc="http://purl.org/dc/elements/1.1/">
<tr><td class="key">Resource Identifier</td><td class="value"><xsl:value-of select="."/></td></tr></xsl:template> <tr><td class="key">Resource Identifier</td><td class="value"><xsl:value-of select="."/></td></tr>
</xsl:template>
<xsl:template match="dc:source" xmlns:dc="http://purl.org/dc/elements/1.1/"> <xsl:template match="dc:source" xmlns:dc="http://purl.org/dc/elements/1.1/">
<tr><td class="key">Source</td><td class="value"><xsl:value-of select="."/></td></tr></xsl:template> <tr><td class="key">Source</td><td class="value"><xsl:value-of select="."/></td></tr>
</xsl:template>
<xsl:template match="dc:language" xmlns:dc="http://purl.org/dc/elements/1.1/"> <xsl:template match="dc:language" xmlns:dc="http://purl.org/dc/elements/1.1/">
<tr><td class="key">Language</td><td class="value"><xsl:value-of select="."/></td></tr></xsl:template> <tr><td class="key">Language</td><td class="value"><xsl:value-of select="."/></td></tr>
</xsl:template>
<xsl:template match="dc:relation" xmlns:dc="http://purl.org/dc/elements/1.1/"> <xsl:template match="dc:relation" xmlns:dc="http://purl.org/dc/elements/1.1/">
<tr><td class="key">Relation</td><td class="value"> <tr><td class="key">Relation</td><td class="value">
<xsl:choose> <xsl:choose>
<xsl:when test='starts-with(.,"http")'> <xsl:when test='starts-with(.,"http")'>
<xsl:choose>
<xsl:when test='string-length(.) &gt; 50'>
<a class="link" href="{.}">URL</a>
<i> URL not shown as it is very long.</i>
</xsl:when>
<xsl:otherwise>
<a href="{.}"><xsl:value-of select="."/></a> <a href="{.}"><xsl:value-of select="."/></a>
</xsl:otherwise>
</xsl:choose>
</xsl:when> </xsl:when>
<xsl:otherwise> <xsl:otherwise>
<xsl:value-of select="."/> <xsl:value-of select="."/>
@ -423,10 +478,12 @@ p.intro {
</xsl:template> </xsl:template>
<xsl:template match="dc:coverage" xmlns:dc="http://purl.org/dc/elements/1.1/"> <xsl:template match="dc:coverage" xmlns:dc="http://purl.org/dc/elements/1.1/">
<tr><td class="key">Coverage</td><td class="value"><xsl:value-of select="."/></td></tr></xsl:template> <tr><td class="key">Coverage</td><td class="value"><xsl:value-of select="."/></td></tr>
</xsl:template>
<xsl:template match="dc:rights" xmlns:dc="http://purl.org/dc/elements/1.1/"> <xsl:template match="dc:rights" xmlns:dc="http://purl.org/dc/elements/1.1/">
<tr><td class="key">Rights Management</td><td class="value"><xsl:value-of select="."/></td></tr></xsl:template> <tr><td class="key">Rights Management</td><td class="value"><xsl:value-of select="."/></td></tr>
</xsl:template>
<!-- <!--
XML Pretty Maker XML Pretty Maker