[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: creating diglot

Subject: Re: creating diglot
From: "Eliot Kimber ekimber@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 11 Aug 2016 14:33:30 -0000
Re:  creating diglot
Given the flat nature of the input I would be tempted to use
for-each-group to synthesize a more normal hierarchy for the input source
and then use that result as input to the language-to-language matching and
final output production phases.

For example,


<xsl:template match="/">
<!-- Make a hierarchical structure that will be easier to process and
     that can also be massaged or augmented as needed to make subsequent
     processing easier.
  -->
  <xsl:variable name="hierarchical" as="node()*">
    <xsl:apply-templates select="book" mode="make-hierarchical"/>
  </xsl:variable/>
<!-- Now generate the final output: -->
  <xsl:apply-templates select="$hierarchical"/>
</xsl:template>

<xsl:template mode="make-hierarchical" match="book">
  <book>
    <xsl:call-template name="setup-book-metadata"/>
    <xsl:for-each-group select="*" group-starting-with="chapter">
      <xsl:choose>
        <xsl:when test="./self::chapter">
          <xsl:call-template select="make-chapter">
            <xsl:with-param name="input" select="current-group()"
as="node()*"/>
          </xsl:call-template>
        <xsl:otherwise>
           <xsl:sequence select="current-group"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:for-each-group>
   </book>
</xsl:template>

The default-mode templates can then be more normal hierarchy-handling
templates, making the rendition generation task easier to manage.

The template make-chapter can then use for-each-group to further organize
the content and so on.

This approach also helps to isolate the logic of handling each level,
making the code a bit more modular and, hopefully, a little easier to
write and validate.

As part of this pre-processing you could also add IDs or other markers to
the elements you need to correlate to make the follow-on language-matching
task easier or more reliable.

For example, if the correlation is based on more complex business logic
than just position, you could implement a function that constructs a
unique ID for a given element based on whatever the business logic is,
whatever that might be.

Cheers,

Eliot
--
Eliot Kimber
http://contrext.com







On 8/10/16, 6:37 PM, "jim_albright@xxxxxxxxxxxx"
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:

>saxon960HE   xslt 2.0
>
>I would like to produce a diglot of scripture. That means two languages
>in two columns per page.
>I have processed each text to identify the chapter and verse in
>attributes cvStart and cvEnd. I can fill in ones without attributes if
>needed.
>
>
>Assuming that English is secondary
>
><?xml version="1.0" encoding="UTF-8"?><usx version="2.0">
>  <book code="MRK" style="id">41-MRK-web.sfm World English Bible British
>Edition (WEBBE)</book>
>  <para style="ide">UTF-8</para>
>  <para style="h">Mark</para>
>  <para style="mt1">Mark</para>
>  <chapter number="1" style="c"/>
>  <para style="p" cvStart="1.1" cvEnd="1.2">
>    <verse number="1" style="v"/>The beginning of the Good News of Jesus
>Christ, the Son of God. <verse number="2" style="v"/>As it is written in
>the prophets,</para>
>  <para style="q1">bBehold, I send my messenger before your face,</para>
>  <para style="q2">who will prepare your way before you: </para>
>  <para style="q1" cvStart="1.3">
>    <verse number="3" style="v"/>the voice of one crying in the
>wilderness,</para>
>  <para style="q2">bMake ready the way of the .Lord!</para>
>  <para style="q2">Make his paths straight!bb </para>
>  <para style="p" cvStart="1.4" cvEnd="1.8">
>    <verse number="4" style="v"/>John came baptising in the wilderness
>and preaching the baptism of repentance for forgiveness of sins. <verse
>number="5" style="v"/>All the country of Judea and all those of Jerusalem
>went out to him. They were baptised by him in the Jordan river,
>confessing their sins. <verse number="6" style="v"/>John was clothed with
>camelbs hair and a leather belt around his waist. He ate locusts and wild
>honey. <verse number="7" style="v"/>He preached, saying, bAfter me comes
>he who is mightier than I, the thong of whose sandals I am not worthy to
>stoop down and loosen. <verse number="8" style="v"/>I baptised you in
>water, but he will baptise you in the Holy Spirit.b</para>
>  <para style="p" cvStart="1.9" cvEnd="1.11">
>    <verse number="9" style="v"/>In those days, Jesus came from Nazareth
>of Galilee, and was baptised by John in the Jordan. <verse number="10"
>style="v"/>Immediately coming up from the water, he saw the heavens
>parting, and the Spirit descending on him like a dove. <verse number="11"
>style="v"/>A voice came out of the sky, bYou are my beloved Son, in whom
>I am well pleased.b</para>
>  <para style="p" cvStart="1.12" cvEnd="1.13">
>...
>
>
>And Tok Pisin is primary
>
><?xml version="1.0" encoding="UTF-8"?><usx version="2.0">
>  <book code="MRK" style="id">Tok Pisin Bible</book>
>  <para style="ide">65001 - Unicode (UTF-8)</para>
>
><para style="mt1">Mak i raitim</para>
>  <para style="imt1">Tok i go pas</para>
>  <para style="ip">Namba wan tok bilong buk Mak i tok olsem, bDispela em
>i gutnius bilong Jisas Krais, Pikinini Bilong God.b Na long dispela buk
>yumi lukim Jisas em i man i gat strong na namba bilong mekim olkain wok.
>Yumi lukim strong na namba bilong en long taim em i skulim ol manmeri na
>long taim em i rausim ol spirit nogut na long taim em i lusim sin bilong
>ol manmeri. Jisas i kolim em yet olsem, bPikinini Bilong Manb, na em i
>tok olsem em i kam bilong givim laip bilong em yet bilong baim bek planti
>manmeri (10.45).</para>
>  <para style="ip">Mak i stori planti long wok bilong Jisas, tasol em i
>no stori planti long ol toktok Jisas i bin mekim bilong skulim ol
>manmeri. Pastaim Mak i stori long wok bilong Jon bilong Baptais na long
>Jisas i kisim baptais na Satan i traim em. Bihain yumi lukim Jisas i
>marimari long ol man i karim ol kain kain hevi, na em i skulim ol.
>Pastaim ol disaipel i no klia tumas long as bilong ol samting Jisas i
>mekim, tasol isi isi ol i kisim save long em.</para>
>  <para style="ip">Yumi lukim tu ol man i kamap birua bilong Jisas na ol
>i givim planti hevi long em. Na long las hap bilong Gutnius em i raitim,
>Mak i stori long Jisas i dai na i kirap bek.</para>
>  <chapter number="1" style="c"/>
>  <para style="ms1">Jisas i kam bilong tokim ol manmeri long kingdom
>bilong God</para>
>  <para style="s2">(Sapta 1.1b3.6)</para>
>  <para style="s1">Jon Bilong Baptais i autim tok</para>
>  <para style="r">(Matyu 3.1-12 na Luk 3.1-9 na 3.15-17 na Jon
>1.19-28)</para>
>  <para style="p" cvStart="1.1">
>    <verse number="1" style="v"/>Dispela em i gutnius bilong Jisas Krais,
>Pikinini Bilong God.</para>
>  <para style="p" cvStart="1.2" cvEnd="1.3">
>    <verse number="2" style="v"/>Dispela gutnius em i kamap pastaim olsem
>profet Aisaia i bin raitim, bHarim. Bai mi salim wanpela man bilong autim
>tok bilong mi, na em i go paslain long yu. Na em bai i redim rot bilong
>yu. <verse number="3" style="v"/>Long ples i no gat man, maus bilong
>wanpela man i singaut olsem, bRedim rot bilong Bikpela. Stretim ol rot
>bilong en.bb</para>
>  <para style="p" cvStart="1.4" cvEnd="1.5">
>   <verse number="4" style="v"/>Jon, dispela man bilong givim baptais, em
>i kamap long ples i no gat man, na em i autim tok long ol manmeri i mas
>tanim bel na kisim baptais, na bai God i lusim sin bilong ol. <verse
>number="5" style="v"/>Na olgeta Judia na olgeta manmeri bilong Jerusalem
>ol i go long Jon. Na ol i autim sin bilong ol, na Jon i baptaisim ol long
>wara Jordan.</para>
>  <para style="p" cvStart="1.6" cvEnd="1.8">
>    <verse number="6" style="v"/>Jon hani bilong bus. <verse number="7"
>style="v"/>Em i autim tok olsem, bWanpela man i kam bihain long mi, na
>strong bilong en i winim strong bilong mi. Mi no gutpela man inap long mi
>brukim skru na lusim string i pasim su bilong em. <verse number="8"
>style="v"/>Mi  save baptaisim yupela long wara. Tasol em bai i baptaisim
>yupela long Holi Spirit.b</para>
>  <para style="s1">Jon i baptaisim Jisas</para>
>  <para style="r">(Matyu 3.13-17 na Luk 3.21-22)</para>
>  <para style="p" cvStart="1.9" cvEnd="1.11">
>    <verse number="9" style="v"/>Long dispela taim Jisas i lusim taun
>Nasaret long distrik Galili na i kam. Na Jon i baptaisim em long wara
>Jordan. <verse number="10" style="v"/>Na Jisas i lusim wara na i kam
>antap, na wantu em i lukim heven i op, na Holi Spirit i kam daun long em
>olsem wanpela bilong ol dispela pisin ol i kolim balus. <verse
>number="11" style="v"/>Na long heven wanpela maus i singaut olsem, bYu
>Pikinini bilong mi. Mi laikim yu tumas. Bel bilong mi em i amamas long
>yu.b</para>
>  <para style="s1">Satan i traim Jisas</para>
>  <para style="r">(Matyu 4.1-11 na Luk 4.1-13)</para>
>  <para style="p" cvStart="1.12" cvEnd="1.13">
>    <verse number="12" style="v"/>Na long dispela taim stret Holi Spirit
>i salim Jisas i go long ples i no gat man. <verse number="13"
>style="v"/>Na  Jisas i stap long ples i no gat man inap long 40 de, na
>Satan i traim em. Em i stap wantaim ol wel abus. Na ol ensel i helpim
>em.</para>
>.....
>
>Desired output (note this was done for Genesis by hand so content won't
>match)
><?xml version="1.0" encoding="UTF-8"?>
>
><book id="GEN">
>
>        <div class="group">
>
>                <div class="secondary">
>
>                        <id id="GEN">World English Bible (WEB) </id>
>
>                        <ide charset="UTF-8"/>
>
>                        <h>Genesis </h>
>
>                        <toc level="1">The First Book of Moses, Commonly
>Called Genesis </toc>
>
>                        <toc level="2">Genesis </toc>
>
>                        <toc level="3">Gen </toc>
>
>                        <p sfm="mt" style="Book Title" level="2">The
>First Book of Moses, </p>
>
>                        <p sfm="mt" style="Book Title" level="3">Commonly
>Called </p>
>
>                        <p sfm="mt" style="Book Title">Genesis </p>
>                </div>
>
>                <div class="primary">
>
>                        <id id="GEN">Tok Pisin Bible </id>
>
>                        <ide charset="65001">- Unicode (UTF-8)</ide>
>
>                        <p sfm="mt" style="Book Title">Stat bilong Olgeta
>Samting </p>
>
>                        <p sfm="mt" style="Book Title" level="2">o </p>
>
>                        <p sfm="mt" style="Book Title" level="2">Jenesis
></p>
>
>                        <p sfm="imt" style="Intro Title Main">Tok i go
>pas </p>
>
>                        <p sfm="ip" style="Intro Paragraph">Dispela buk i
>stori long as o stat
>                                bilong olgeta samting. Em i stori long as
>bilong skai na graun, na
>                                em i stori tu long stat bilong ol manmeri
>na long as bilong ol sin
>                                na hevi na pen i stap long dispela graun.
>Em i stori long rot God
>                                yet i makim bilong wok wantaim yumi
>manmeri bilong dispela graun. </p>
>
>                        <p sfm="ip" style="Intro Paragraph">Yumi inap
>brukim dispela buk long tupela
>                                bikpela hap. </p>
>
>                        <p sfm="ip" style="Intro Paragraph">1) Sapta
>1-11. Dispela hap i stori long
>                                God i wokim skai na graun, na em i stori
>tu long ol samting i bin
>                                kamap bipo yet, taim ol manmeri i kamap
>long graun. I gat ol stori
>                                bilong Adam tupela Iv, na bilong Kein na
>Abel. Na tu dispela hap
>                                bilong buk i stori long Noa na long
>bikpela tait i bin kamap long
>                                graun, na long taua bilong Babel. </p>
>
>                        <p sfm="ip" style="Intro Paragraph">2) Sapta
>12-50. Dispela ol sapta i stori
>                                long ol tumbuna bilong ol lain Israel.
>Namba wan tumbuna em Abraham.
>                                Abraham i bin aninit tru long laik bilong
>God na em i kamap olsem
>                                piksa bilong ol manmeri i bilip tru long
>God. Dispela hap i stori tu
>                                long Aisak na long pikinini bilong en
>Jekop wantaim ol 12-pela
>                                pikinini man bilong em. Dispela man Jekop
>em i kisim narapela nem
>                                Israel, na ol 12-pela pikinini man bilong
>en i bin kamapim ol
>                                12-pela lain bilong Israel. Planti sapta
>long dispela hap bilong buk
>                                i stori long Josep, em wanpela pikinini
>bilong Jekop. Ol i soim klia
>                                ol samting i bin kamap bilong mekim ol
>lain tumbuna bilong ol Israel
>                                i go i stap long kantri Isip. </p>
>
>                        <p sfm="ip" style="Intro Paragraph">I gat planti
>stori bilong ol manmeri i
>                                stap insait long dispela buk, tasol namba
>wan samting dispela buk i
>                                tok long en, em ol samting God yet i bin
>mekim. Pastaim God yet i
>                                bin wokim olgeta samting, na bihain, taim
>ol manmeri i stat long
>                                mekim ol pasin nogut, God i mekim save
>long ol na em i larim ol lain
>                                bilong Noa tasol i stap. Na bihain gen,
>God i makim Abraham na em i
>                                promis long mekim gut long Abraham na
>long ol lain tumbuna bilong
>                                en. Dispela buk i stori moa yet long God.
>Em i Papa tru bilong ol
>                                manmeri, na em i save skelim pasin bilong
>ol na mekim save long ol
>                                lain i save mekim rong. Na em i save
>bosim gut na lukautim ol
>                                manmeri i aninit long em. Dispela buk i
>stori long bilip bilong ol
>                                manmeri bilong bipo tru, bai ol lain i
>kamap bihain, ol tu i ken
>                                ritim na i stap strong long bilip. </p>
>                </div>
>        </div>
>
>        <div class="group">
>
>                <div class="secondary">
>
>                        <p>
>                                <v id="1"/>In the beginning, God <f
>caller="+">The Hebrew word
>                                        rendered bGodb is
bWV1WV9WV4VWWb
>(Elohim).</f> created the
>                                heavens and the earth. <ve/>
>                                <v id="2"/>The earth was formless and
>empty. Darkness was on the
>                                surface of the deep and Godbs Spirit was
>hovering over the surface
>                                of the waters. <ve/></p>
>
>                        <p>
>                                <v id="3"/>God said, bLet there be
>light,b and there was light. <ve/>
>                                <v id="4"/>God saw the light, and saw
>that it was good. God divided
>                                the light from the darkness. <ve/>
>                                <v id="5"/>God called the light bdayb,
>and the darkness he called
>                                bnightb. There was evening and there was
>morning, the first day.
>                                <ve/></p>
>                </div>
>
>                <div class="primary">
>
>                        <c id="1"/>
>
>                        <p sfm="ms" style="Section Head Major">God i
>mekim kamap olgeta samting </p>
>
>                        <p sfm="mr" style="Section Range">(Sapta 1-2) </p>
>
>                        <s>Stori bilong God i mekim kamap olgeta samting
></s>
>
>                        <p>
>                                <v id="1"/>Bipo bipo tru God i
>                                mekim kamap skai na graun na olgeta
>samting i stap long en. <ve/>
>                                <v id="2"/>Tasol graun i no bin i stap
>                                olsem yumi save lukim nau. Nogat. Em i
>stap nating na i narakain
>                                tru. Tudak i karamapim bikpela wara na
>spirit bilong God i go i kam
>                                antap long en. <ve/>
>                                <v id="3"/>Na God i tok olsem, bLait i
>mas kamap.b
>                                Orait lait i kamap. <ve/>
>                                <v id="4"/>God i lukim lait i gutpela, na
>em i amamas. Na em i
>                                brukim tudak na tulait. <ve/>
>                                <v id="5"/>Tulait em i kolim bDe,b na
>tudak em i kolim bNait.b Nait
>                                i go pinis na moning i kamap. Em i de
>namba wan. <ve/></p>
>                </div>
>        </div>
>
>        <div class="group">
>
>                <div class="secondary">
>
>                        <p>
>                                <v id="6"/>God said, bLet there be an
>expanse in the middle of the
>                                waters, and let it divide the waters from
>the waters.b <ve/>
>                                <v id="7"/>God made the expanse, and
>divided the waters which were
>                                under the expanse from the waters which
>were above the expanse; and
>                                it was so. <ve/>
>                                <v id="8"/>God called the expanse bskyb.
>There was evening and there
>                                was morning, a second day. <ve/></p>
>                </div>
>
>                <div class="primary">
>
>                        <p>
>                                <v id="6-7"/>Bihain God i tok olsem,
>bWanpela banis i mas
>                                kamap bilong banisim wara, bai wara i
>stap long tupela hap.b Orait
>                                dispela banis i kamap. God i mekim
>dispela banis i kamap bilong
>                                banisim wara antap na wara daunbilo. <ve/>
>                                <v id="8"/>Na dispela banis em i kolim
>bSkai.b Nait i go pinis na
>                                moning i kamap. Em i de namba 2. <ve/></p>
>                </div>
>        </div>
>
>        <div class="group">
>
>               <div class="secondary">
>
>                        <p>
>                                <v id="9"/>God said, bLet the waters
>under the sky be gathered
>                                together to one place, and let the dry
>land appearb; and it was so. <ve/>
>                                <v id="10"/>God called the dry land
>bearthb, and the gathering
>                                together of the waters he called bseasb.
>God saw that it was good. <ve/>
>                                <v id="11"/>God said, bLet the earth
>yield grass, herbs yielding
>                                seeds, and fruit trees bearing fruit
>after their kind, with their
>                                seeds in it, on the earthb; and it was
>so. <ve/>
>                                <v id="12"/>The earth yielded grass,
>herbs yielding seed after their
>                                kind, and trees bearing fruit, with their
>seeds in it, after their
>                                kind; and God saw that it was good. <ve/>
>                                <v id="13"/>There was evening and there
>was morning, a third day.
>                                <ve/></p>
>                </div>
>
>                <div class="primary">
>
>                        <p>
>                                <v id="9"/>Bihain God i tok olsem, bWara
>i stap aninit long skai i
>                                mas i go bung long wanpela hap tasol, bai
>ples drai i kamap.b Orait
>                                ples drai i kamap. <ve/>
>                                <v id="10"/>Dispela ples drai God i kolim
>bGraun.b Na ol wara i bung
>                                pinis long wanpela hap em i kolim
>bSolwara.b God i lukim olgeta
>                                dispela samting i gutpela, na em i
>amamas. <ve/>
>                                <v id="11"/>Bihain God i tok olsem,
>bGraun i mas kamapim ol kain
>                                kain diwai na gras na kaikai samting.b
>Orait dispela samting i
>                                kamap. <ve/>
>                                <v id="12"/>Ol kain kain diwai na gras na
>kaikai samting i kamap
>                                long graun. God i lukim olgeta dispela
>samting i gutpela, na em i
>                                amamas. <ve/>
>                                <v id="13"/>Nait i go pinis na moning i
>kamap. Em i de namba 3.
>                                <ve/></p>
>
>                </div>
>        </div>
>
>        <div class="group">
>                <div class="secondary">
>
>                        <p>
>                                <v id="14"/>God said, bLet there be
>lights in the expanse of sky to
>                                divide the day from the night; and let
>them be for signs to mark
>                                seasons, days, and years; <ve/>
>                                <v id="15"/>and let them be for lights in
>the expanse of sky to give
>                                light on the earthb; and it was so. <ve/>
>                                <v id="16"/>God made the two great
>lights: the greater light to rule
>                                the day, and the lesser light to rule the
>night. He also made the
>                                stars. <ve/>
>                                <v id="17"/>God set them in the expanse
>of sky to give light to the
>                                earth, <ve/>
>                                <v id="18"/>and to rule over the day and
>over the night, and to
>                                divide the light from the darkness. God
>saw that it was good. <ve/>
>                                <v id="19"/>There was evening and there
>was morning, a fourth day.
>                                <ve/></p>
>                </div>
>
>Resulting pdf where primary text is outside and secondary text is inside.
> This is a proof of concept. I will add the verse numbers and better
>formatting. I just wanted to be sure I could handle the alignment at
>paragraphs correctly.
>Tok Pisin is wordier so I may adjust column sizes to help minimize page
>count.
>
>
>
>
>
>My problem is how do I select text from secondary document to correspond
>to the primary at paragraph level of primary document?
>
><?xml version="1.0" encoding="UTF-8"?>
><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>    exclude-result-prefixes="xs"
>    version="2.0">
>
><xsl:variable name="secondary"
>select="document('../secondary/041MRK.usx')"/>
>
><xsl:template match="book">
>    <xsl:element name="book">
>        <xsl:attribute name="id" select="@code"/>
>       <xsl:apply-templates select="following-sibling::para"/>
>    </xsl:element>
></xsl:template>
>
> <xsl:template match="para">
>    <xsl:call-template name="makeGroup">
>    <xsl:with-param  name="cvStart" select="@cvStart"/>
>    <xsl:with-param name="cvEnd" select="@cvEnd"/>
>    </xsl:call-template>
></xsl:template>
>
><xsl:template name="makeGroup">
>    <xsl:param name="cvStart" select="."/>
>    <xsl:param name="cvEnd" select="."/>
>   <xsl:element name="group">
>        <xsl:element name="secondary">
>            <xsl:element name="p">
>                <xsl:attribute name="class" select="@style"/>
>                      <xsl:value-of select="$secondary//para[@cvStart =
>'1.1' ]"/>
>           </xsl:element>
>
>            <xsl:element name="p">
>                <xsl:attribute name="class" select="@style"/>
><!--              <xsl:apply-templates />-->
>            </xsl:element>
>
>        </xsl:element>
>    </xsl:element>
></xsl:template>
>
>Problems
>1.                   <xsl:value-of select="$secondary//para[10 ]"/>
>correctly selects the tenth paragraph from secondary text
>But      [@cvStart = '1.1' ] fails so does
>                       [@cvStart = $cvStart] fails also
>2. If I use <apply-templates select=b&.    I get into an endless loop.
>There must be an easy solution to stop this.
>
>Any help is appreciated.
>
>Jim Albright
>704-562-1529 unlimited cell
>Wycliffe Bible Translators
>
>
>PDF or picture available.

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.