-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathadd-incipit.xsl
66 lines (54 loc) · 2.34 KB
/
add-incipit.xsl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?xml version="1.0" encoding="UTF-8" ?>
<!--
add-incipit.xsl - a simple XSLT (1.0) stylesheet for adding incipits to MEI files
Klaus Rettinghaus <rettinghaus@bach-leipzig.de>
Leipzig University
-->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:mei="http://www.music-encoding.org/ns/mei" exclude-result-prefixes="mei">
<xsl:import href="mei2pae.xsl" />
<xsl:output method="xml" indent="yes" omit-xml-declaration="no" />
<xsl:strip-space elements="*" />
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="mei:meiHead">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="mei:titleStmt">
<!-- MEI3 -->
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
<xsl:if test="parent::mei:work">
<xsl:call-template name="create-incipit" />
</xsl:if>
</xsl:template>
<xsl:template match="mei:title">
<!-- MEI4 -->
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
<xsl:if test="parent::mei:work">
<xsl:call-template name="create-incipit" />
</xsl:if>
</xsl:template>
<xsl:template name="create-incipit">
<xsl:element name="incip" namespace="http://www.music-encoding.org/ns/mei">
<xsl:element name="incipCode" namespace="http://www.music-encoding.org/ns/mei">
<xsl:attribute name="form">plaineAndEasie</xsl:attribute>
<xsl:apply-templates select="//mei:staffDef[@n = $staff]|/descendant::mei:measure[position() <= $measures]" mode="music" />
</xsl:element>
<xsl:if test="//mei:verse">
<xsl:element name="incipText" namespace="http://www.music-encoding.org/ns/mei">
<xsl:element name="p" namespace="http://www.music-encoding.org/ns/mei">
<xsl:apply-templates select="//mei:staffDef[@n = $staff]|/descendant::mei:measure[position() <= $measures]" mode="lyrics" />
</xsl:element>
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:template>
</xsl:stylesheet>