annotate summa/bilingual/merge.xsl @ 114:1940408e02bf

thru 56.4 only
author ht
date Sat, 23 Feb 2019 15:29:19 +0000
parents c910f10a8e83
children b1163b317cd4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
100
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
1 <?xml version='1.0'?>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
2 <!DOCTYPE doc SYSTEM "../../../../lib/xml/xsl.dtd" >
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
3 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" exclude-result-prefixes="x" xmlns:x="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
4
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
5 <!-- Merge wrapped latin and prepped english to produce two-column
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
6 bilingual for a single Summa Question -->
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
7 <xsl:param name="lfs">xyzzy</xsl:param><!-- names of latin files -->
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
8 <xsl:variable name="latin" select="for $lf in tokenize($lfs,';') return document($lf,/)/*"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
9 <xsl:key name="lq" match="x:div[@class='q']" use="@id"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
10 <xsl:variable name="di" select="/x:div/@id"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
11 <xsl:variable name="qi" select="concat('q',substring-after($di,'_Q'))"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
12 <xsl:variable name="la" select="for $ld in $latin return key('lq',$qi,$ld)"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
13
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
14 <xsl:template match="/">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
15 <xsl:message>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
16 <xsl:text>English|Latin|latin count&#10;</xsl:text>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
17 <xsl:value-of select="$di"/>|<xsl:value-of select="$qi"/>|<xsl:value-of select="count($la)"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
18 </xsl:message>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
19 <xsl:apply-templates/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
20 </xsl:template>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
21
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
22 <xsl:template match="node()|@*">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
23 <xsl:copy>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
24 <xsl:apply-templates select="node()|@*"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
25 </xsl:copy>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
26 </xsl:template>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
27
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
28 <xsl:template match="x:div[@class='div4' and not(@id)]">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
29 <!-- Wrap a prooemium -->
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
30 <xsl:copy>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
31 <xsl:call-template name="doBi">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
32 <xsl:with-param select="@*|node()" name="english"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
33 <xsl:with-param select="$la/x:div[@class='p']/x:p" name="latin"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
34 </xsl:call-template>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
35 </xsl:copy>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
36 </xsl:template>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
37
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
38 <xsl:template match="x:div[@class='div4' and @id]">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
39 <!-- Wraps a single article within a question -->
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
40 <xsl:variable name="n" select="count(preceding-sibling::x:div[@id])+1"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
41 <xsl:variable name="ld" select="$la/x:div[@class='a'][position()=$n]"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
42 <xsl:variable name="lp" select="$ld/*[self::x:p or self::x:div]"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
43 <xsl:message><xsl:value-of select="@id"/>,<xsl:value-of select="$n"/>,<xsl:value-of select="x:h4"/>,<xsl:value-of select="count(x:p)"/>,<xsl:value-of select="$ld/x:h3"/>,<xsl:value-of select="count($lp)"/></xsl:message>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
44 <xsl:choose>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
45 <xsl:when test="count(x:p)=count($lp)">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
46 <xsl:copy>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
47 <xsl:apply-templates select="@*|x:h4"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
48 <xsl:for-each select="x:p">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
49 <xsl:variable name="i" select="position()"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
50 <xsl:call-template name="doBi">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
51 <xsl:with-param select="." name="english"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
52 <xsl:with-param select="$lp[position()=$i]" name="latin"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
53 </xsl:call-template>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
54 </xsl:for-each>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
55 </xsl:copy>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
56 </xsl:when>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
57 <xsl:otherwise>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
58 <xsl:message>Can't merge article <xsl:value-of select="@id"/>, <xsl:value-of select="count(x:p)"/>!=<xsl:value-of select="count($lp)"/></xsl:message>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
59 <!-- Try to split on keywords in English -->
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
60 <xsl:variable name="pb" select="count(x:p/x:b[starts-with(.,'Objection') or (.='On the contrary,') or (.='I answer that,') or starts-with(.,'Reply to ')])"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
61 <xsl:choose>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
62 <xsl:when test="$pb=count($lp)">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
63 <xsl:copy>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
64 <xsl:apply-templates select="@*|x:h4"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
65 <xsl:for-each-group select="x:p" group-starting-with="x:p[x:b[starts-with(.,'Objection') or (.='On the contrary,') or (.='I answer that,') or starts-with(.,'Reply to ')]]">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
66 <xsl:variable name="i" select="position()"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
67 <xsl:call-template name="doBi">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
68 <xsl:with-param select="current-group()" name="english"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
69 <xsl:with-param select="$lp[position()=$i]" name="latin"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
70 </xsl:call-template>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
71 </xsl:for-each-group>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
72 </xsl:copy>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
73 </xsl:when>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
74 <xsl:otherwise>
109
c910f10a8e83 still can't message
ht
parents: 100
diff changeset
75 <xsl:message>Still can't merge article <xsl:value-of select="@id"/>,
c910f10a8e83 still can't message
ht
parents: 100
diff changeset
76 <xsl:value-of select="$pb"/> out of <xsl:value-of select="count(x:p/x:b)"/>!=<xsl:value-of select="count($lp)"/></xsl:message>
100
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
77 </xsl:otherwise>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
78 </xsl:choose>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
79 </xsl:otherwise>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
80 </xsl:choose>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
81 </xsl:template>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
82
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
83 <xsl:template name="doBi">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
84 <xsl:param name="english"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
85 <xsl:param name="latin"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
86 <div class="bilingual">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
87 <xsl:choose>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
88 <xsl:when test="count($english)=1">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
89 <xsl:for-each select="$english">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
90 <xsl:copy>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
91 <xsl:attribute name="class">english</xsl:attribute>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
92 <xsl:apply-templates select="@*[not(local-name()='class')]|node()"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
93 </xsl:copy>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
94 </xsl:for-each>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
95 </xsl:when>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
96 <xsl:otherwise>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
97 <div class="english">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
98 <xsl:apply-templates select="$english"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
99 </div>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
100 </xsl:otherwise>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
101 </xsl:choose>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
102 <xsl:for-each select="$latin">
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
103 <xsl:copy>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
104 <xsl:attribute name="class">latin</xsl:attribute>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
105 <xsl:apply-templates select="@*[not(local-name()='class')]|node()"/>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
106 </xsl:copy>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
107 </xsl:for-each>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
108 </div>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
109 </xsl:template>
eea25317dfad clarify order of messages
ht
parents: 88
diff changeset
110 </xsl:stylesheet>