Revision 2398 tmp/org.txm.oriflamms.rcp/groovy/org/txm/macro/oriflamms/prepare/oriflamms-patch-words-with-lb.xsl

oriflamms-patch-words-with-lb.xsl (revision 2398)
1 1
<?xml version="1.0"?>
2
<xsl:stylesheet xmlns:edate="http://exslt.org/dates-and-times"
3
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:tei="http://www.tei-c.org/ns/1.0"
4
  exclude-result-prefixes="tei edate" version="2.0">
2
<xsl:stylesheet
3
	xmlns:edate="http://exslt.org/dates-and-times"
4
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
5
	xmlns:tei="http://www.tei-c.org/ns/1.0"
6
	exclude-result-prefixes="tei edate" version="2.0">
5 7

  
6
  <xsl:output method="xml" encoding="utf-8" omit-xml-declaration="no"/>
8
	<xsl:output method="xml" encoding="utf-8"
9
		omit-xml-declaration="no" />
7 10

  
8 11
	<xsl:template match="node()|@*">
9 12
		<!-- Copy the current node -->
10 13
		<xsl:copy>
11 14
			<!-- Including any attributes it has and any child nodes -->
12
			<xsl:apply-templates select="@*|node()"/>
15
			<xsl:apply-templates select="@*|node()" />
13 16
		</xsl:copy>
14 17
	</xsl:template>
15 18

  
16 19
	<xsl:template name="wp1">
17
		<xsl:for-each select="child::node()[not(self::tei:pb or self::tei:cb or self::tei:milestone) and following-sibling::*[descendant-or-self::tei:lb]]">
18
			<xsl:apply-templates select="."/>
20
		<xsl:for-each
21
			select="child::node()[not(self::tei:pb or self::tei:cb or self::tei:milestone) and following-sibling::*[descendant-or-self::tei:lb]]">
22
			<xsl:apply-templates select="." />
19 23
		</xsl:for-each>
20 24
		<xsl:for-each select="child::*[descendant::tei:lb]">
21 25
			<xsl:copy>
22
				<xsl:apply-templates select="@*"/>
23
				<xsl:call-template name="wp1"/>
26
				<xsl:apply-templates select="@*" />
27
				<xsl:call-template name="wp1" />
24 28
			</xsl:copy>
25 29
		</xsl:for-each>
26 30
	</xsl:template>
27
	
31

  
28 32
	<xsl:template name="wp2">
29 33
		<xsl:for-each select="child::*[descendant::tei:lb]">
30 34
			<xsl:copy>
31
				<xsl:apply-templates select="@*"/>
32
				<xsl:call-template name="wp2"/>
35
				<xsl:apply-templates select="@*" />
36
				<xsl:call-template name="wp2" />
33 37
			</xsl:copy>
34
		</xsl:for-each>		
35
		<xsl:for-each select="child::node()[not(self::tei:pb or self::tei:cb or self::tei:milestone) and preceding-sibling::*[descendant-or-self::tei:lb]]">
36
			<xsl:apply-templates select="."/>
37 38
		</xsl:for-each>
39
		<xsl:for-each
40
			select="child::node()[not(self::tei:pb or self::tei:cb or self::tei:milestone) and preceding-sibling::*[descendant-or-self::tei:lb]]">
41
			<xsl:apply-templates select="." />
42
		</xsl:for-each>
38 43
	</xsl:template>
39 44

  
40
	<xsl:template match="tei:w[not(ancestor::tei:w or ancestor::tei:pc)]">
45
	<xsl:template
46
		match="tei:w[not(ancestor::tei:w or ancestor::tei:pc)]">
41 47
		<xsl:copy>
42
			<xsl:apply-templates select="@*"/>
48
			<xsl:apply-templates select="@*" />
43 49
			<xsl:choose>
44
				<xsl:when test="descendant::tei:lb and not(descendant::tei:seg[@type='wp'])">
50
				<xsl:when
51
					test="descendant::tei:lb and not(descendant::tei:seg[@type='wp'])">
45 52
					<seg xmlns="http://www.tei-c.org/ns/1.0" type="wp" part="I">
46
						<xsl:call-template name="wp1"/>
53
						<xsl:call-template name="wp1" />
47 54
					</seg>
48
					<xsl:apply-templates select="descendant::tei:milestone|descendant::tei:pb|descendant::tei:cb|descendant::tei:lb"/>
55
					<xsl:apply-templates
56
						select="descendant::tei:milestone|descendant::tei:pb|descendant::tei:cb|descendant::tei:lb" />
49 57
					<seg xmlns="http://www.tei-c.org/ns/1.0" type="wp" part="F">
50
						<xsl:call-template name="wp2"/>
58
						<xsl:call-template name="wp2" />
51 59
					</seg>
52 60
				</xsl:when>
53
				<xsl:otherwise><xsl:apply-templates/></xsl:otherwise>
54
			</xsl:choose>      
61
				<xsl:otherwise>
62
					<xsl:apply-templates />
63
				</xsl:otherwise>
64
			</xsl:choose>
55 65
		</xsl:copy>
56 66
	</xsl:template>
57
	
67

  
58 68
	<!-- on supprime les w et pc imbriqués -->
59
	<xsl:template match="tei:w[ancestor::tei:w or ancestor::tei:pc]|tei:pc[ancestor::tei:w or ancestor::tei:pc]">
60
		<xsl:apply-templates/>
69
	<xsl:template
70
		match="tei:w[ancestor::tei:w or ancestor::tei:pc]|tei:pc[ancestor::tei:w or ancestor::tei:pc]">
71
		<xsl:apply-templates />
61 72
	</xsl:template>
62 73

  
63 74
</xsl:stylesheet>

Also available in: Unified diff