Added test of DOM filter and use of input chain + snippets.
[idzebra-moved-to-github.git] / test / xslt / dctoindex.xsl
1 <?xml version="1.0"?>
2
3 <!-- This maps any root element containing elements in the DC namespace to an index structure
4 -->
5
6 <xsl:stylesheet
7   version="1.0"
8   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
9   xmlns:pgterms="http://www.gutenberg.org/rdfterms/"
10   xmlns:z="http://indexdata.com/zebra-2.0"
11   exclude-result-prefixes="pgterms">
12
13   <!-- Extract sort keys in addition to word keys -->
14   <xsl:variable name="sort">|title|date|creator|</xsl:variable>
15   <!-- Extract phrase keys in addition to word keys -->
16   <xsl:variable name="phrase">|title|date|creator|</xsl:variable>
17
18   <xsl:output method="xml" indent="yes"/>
19
20   <xsl:template match="/ignore">
21     <z:record/>
22   </xsl:template>
23
24   <xsl:template match="/*">
25     <z:record>
26       <z:index name="any:w">
27         <xsl:apply-templates/>
28       </z:index>
29
30       <xsl:call-template name="special-indexes"/>
31
32       <!--
33       <z:index name="anywhere:w">
34         <xsl:value-of select="normalize-space()"/>
35       </z:index>
36       -->
37     </z:record>
38   </xsl:template>
39
40   <xsl:template match="/*/*[namespace-uri() = 'http://purl.org/dc/elements/1.1/']">
41     <z:index name="{local-name()}:w">
42       <xsl:value-of select="."/>
43     </z:index>
44   </xsl:template>
45
46   <xsl:template name="special-indexes">
47     <xsl:for-each select="/*/*">
48       <xsl:if test="contains($sort, local-name(.))">
49         <z:index name="{local-name(.)}:s">
50           <xsl:value-of select="."/>
51         </z:index>
52       </xsl:if>
53       <xsl:if test="contains($phrase, local-name(.))">
54         <z:index name="{local-name(.)}:p">
55           <xsl:value-of select="."/>
56         </z:index>
57       </xsl:if>
58     </xsl:for-each>
59   </xsl:template>
60
61   <xsl:template match="text()"/>
62 </xsl:stylesheet>