source: main/trunk/greenstone2/etc/gsdom2rdf.xsl@ 28582

Last change on this file since 28582 was 28582, checked in by davidb, 10 years ago

Default conversion to map Greenstone doc.xml file format into triples (TTL format) for an RDF triple-store

  • Property svn:executable set to *
  • Property svn:mime-type set to application/xml
File size: 3.2 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<xsl:stylesheet version="1.0"
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4 xmlns:java="http://xml.apache.org/xslt/java"
5 extension-element-prefixes="java"
6 exclude-result-prefixes="java">
7
8 <xsl:output method="text"/>
9
10
11 <xsl:template name="escapeQuote">
12 <xsl:param name="pText" select="."/>
13
14 <xsl:if test="string-length($pText) >0">
15 <xsl:value-of select="substring-before(concat($pText, '&quot;'), '&quot;')"/>
16
17 <xsl:if test="contains($pText, '&quot;')">
18 <xsl:text>\"</xsl:text>
19
20 <xsl:call-template name="escapeQuote">
21 <xsl:with-param name="pText" select=
22 "substring-after($pText, '&quot;')"/>
23 </xsl:call-template>
24 </xsl:if>
25 </xsl:if>
26 </xsl:template>
27
28
29 <xsl:variable name="docoid"><xsl:value-of select="/Section/Description/Metadata[@name='Identifier']"/></xsl:variable>
30
31 <xsl:template match="/">
32@prefix dc: &lt;http://purl.org/dc/elements/1.1/&gt; .
33@prefix vcard: &lt;http://www.w3.org/2001/vcard-rdf/3.0#&gt; .
34
35@prefix gsembedded: &lt;http://greenstone.org/gsembedded#&gt; .
36@prefix gsextracted: &lt;http://greenstone.org/gsextracted#&gt; .
37@prefix : &lt;@libraryurl@/collection/@collect@/document/&gt; .
38
39 <xsl:apply-templates/>
40 </xsl:template>
41
42 <xsl:template match="/Section/Description">
43
44:<xsl:value-of select="$docoid"/>
45
46 <xsl:for-each select="Metadata">
47
48 <xsl:variable name="metaname" select="@name"/>
49<!--
50 <xsl:variable name="metavalRaw"><xsl:value-of select="text()/></xsl:variable>
51 <xsl:variable name="metavalSingleLine"><xsl:value-of select="replace($metavalRaw,'\n',' ')"/></xsl:variable>
52-->
53
54 <xsl:variable name="metaval"><xsl:call-template name="escapeQuote"><xsl:with-param name="pText" select="text()"/></xsl:call-template></xsl:variable>
55<!--
56 <xsl:variable name="metaval"><xsl:value-of select="replace($metavalEsc, '\n', '&lt;br /&gt;')"/></xsl:variable>
57-->
58<!--
59 <xsl:variable name="metaval"><xsl:value-of select="$metavalEsc/></xsl:variable>
60-->
61
62 <xsl:if test="starts-with($metaname,'dc.')">
63 <xsl:variable name="metanameSuffix"><xsl:value-of select="substring($metaname,4)"/></xsl:variable>
64 dc:<xsl:value-of select="$metanameSuffix"/><xsl:text> </xsl:text>&quot;<xsl:value-of select="$metaval"/>&quot;<xsl:text> ;</xsl:text>
65 </xsl:if>
66
67 <xsl:if test="starts-with($metaname,'ex.')">
68 <xsl:variable name="metanameSuffix"><xsl:value-of select="substring($metaname,4)"/></xsl:variable>
69 gsembedded:<xsl:value-of select="$metanameSuffix"/><xsl:text> </xsl:text>&quot;<xsl:value-of select="$metaval"/>&quot;<xsl:text> ;</xsl:text>
70 </xsl:if>
71
72 <xsl:if test="not(contains($metaname,'.'))">
73 gsextracted:<xsl:value-of select="$metaname"/><xsl:text> </xsl:text>&quot;<xsl:value-of select="$metaval"/>&quot;<xsl:text> ;</xsl:text>
74 </xsl:if>
75
76 </xsl:for-each>
77 .
78 </xsl:template>
79
80 <!-- *** Update to include section level metadata -->
81
82 <xsl:template match="/Section/Content">
83 <!-- Full text is supressed for now -->
84 </xsl:template>
85
86</xsl:stylesheet>
87
Note: See TracBrowser for help on using the repository browser.