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

Full Bible (Old Testament) concordance in XSLT 2.0 (Wa

Subject: Full Bible (Old Testament) concordance in XSLT 2.0 (Was: Re: Concordance with XSLT)
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Sun, 20 Nov 2005 16:15:28 +1100
old testament concordance
Here's the code of my full Concordance solution. At the moment it will
process any word longer than three characters with frequency count in
the document not exceeding a given frequency count parameter.

The first step is to produce a word-frequency list, sorted
alphabetically. It is used by the next step of the solution to
efficiently determine the frequency of any word in order to decide
whether this word should be processed. Here a modification of the FXSL
binSearch() function -- binRetrieve() is used. It not only determines
if a given value is in a sorted list of values, but returns the hit
from the list. In this way we find the word as fast as possible and
get the frequency as a sibling attribute.

The code below should be quite self-explaining:

testConcordance2.xsl
=================
<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:f="http://fxsl.sf.net/"
 exclude-result-prefixes="f xs"
 >
 <xsl:import href="../f/func-binRetrieve.xsl"/>

 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:template match="/">

   <xsl:variable name="vOccurences" as="element()*">
	   <xsl:perform-sort select=
	     "f:allWords(/tstmt/bookcoll/book
	                                /chapter/(.|div)
	                                     /v/text(),
	                 f:wordFreq(/tstmt/bookcoll/book
	                                     /chapter/(.|div)
	                                        /v/text()
	                            ),
	                1280
	                 )">
	      <xsl:sort select="@str"/>
	   </xsl:perform-sort>
   </xsl:variable>
	
		<concordance>
			<xsl:for-each-group select="$vOccurences/@str" group-by=".">
			  <xsl:sort select="current-grouping-key()"/>
				<w t="{current-grouping-key()}">
				  <xsl:for-each select="current-group()">
				    <xsl:sequence select=
				    "concat(../@b,'+',../@c,'+',../@v,
				            if(position()ne last()) then ',' else ()
				            )"/>
				  </xsl:for-each>
				</w>
			</xsl:for-each-group>
		</concordance>	
 </xsl:template>

 <xsl:function name="f:allWords" as="element()*">
   <xsl:param name="pNodes" as="node()*"/>
   <xsl:param name="pUniqWrdFreq" as="item()*"/>
   <xsl:param name="pmaxFreq" as="xs:integer"/>


   <xsl:sequence select=
    "for $vNode in $pNodes,
	       $w in tokenize(string($vNode), '[\s.?!,;:\-\+()]+')
	               [.
	               and
	                string-length(.) gt 3
	               and
	                   f:binRetrieve($pUniqWrdFreq/@t,
                                   string(.)
                                   )
                                   /../@f/xs:integer(.)
                   le
                     $pmaxFreq

                 ]
	          return
	             f:wordInfo($vNode, $w)"
    />
 </xsl:function>

 <xsl:function name="f:wordInfo" as="element()">
   <xsl:param name="pNode" as="node()"/>
   <xsl:param name="pWord" as="xs:string"/>

   <w str="{lower-case($pWord)}"
       b="{substring($pNode/ancestor::book[1]/bktshort,1,3)}"
       c="{count($pNode/ancestor::chapter[1]
                             /preceding-sibling::chapter)+1}"
       v="{count($pNode/ancestor-or-self::v[1]/preceding-sibling::v)+1}"/>


 </xsl:function>

 <xsl:function name="f:wordFreq" as="element()*">
   <xsl:param name="pNodes" as="node()*"/>
	
	 <xsl:for-each-group group-by="." select=
	 "for $vNode in $pNodes,
	       $w in tokenize(string($vNode), '[\s.?!,;:\-\+()]+')[.]
	          return
	             lower-case($w)"
	 >
		 <xsl:sort select="current-grouping-key()" />
		 <w t="{current-grouping-key()}"
		    f="{count(current-group())}"/>
	 </xsl:for-each-group>
 </xsl:function>
</xsl:stylesheet>

When this transformation is applied on the xml-ised text of the Old
Testament (ommitted for brevity), the result produced had these
time/space details:


Max-Word-Freq.     Time (ms)    Memory (Saxon8.6)    Memory (Win Task Manager)
================================================================
1280                           91828                   499MB          
                        579MB



This was run using Saxon 8.6 on my 3GHz, 2GB Pentium IV PC.

The code above is 95 lines long and this itself should speak enough
about the suitability and power of the XSLT 2.0 programming language
for string processing.


We all need to thank Michael Kay for the incredible performance boost
achieved in Saxon 8.6. What takes 1 1/2 (one and a half) minute with
Saxon 8.6 takes many hours (killed it after 1.5 hours) with the
previous version of Saxon.

For completeness, here's the code of the FXSL binRetrieve() function:

func-binRetrieve.xsl
===============
<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:f="http://fxsl.sf.net/"
 exclude-result-prefixes="f xs"
 >

 <xsl:import href="../f/func-apply.xsl"/>

  <xsl:function name="f:binRetrieve" as="item()?">
   <xsl:param name="pSeq" as="item()+"/>
   <xsl:param name="pVal" as="item()"/>
   <xsl:sequence select="f:binRetrieve($pSeq,$pVal,1,count($pSeq))"/>
</xsl:function>

  <xsl:function name="f:binRetrieve" as="item()?">
   <xsl:param name="pEq" as="element()?"/>
   <xsl:param name="pLt" as="element()?"/>
   <xsl:param name="pSeq" as="item()+"/>
   <xsl:param name="pVal" as="item()"/>
   <xsl:param name="pStart" as="item()"/>
   <xsl:param name="pEnd" as="item()"/>

   <xsl:sequence select=
     "if($pStart gt $pEnd) then ()
       else
       if(empty(($pEq, $pLt)[2]))
        then f:binRetrieve($pSeq, $pVal, $pStart, $pEnd)
        else
          for $mid in ($pStart + $pEnd) idiv 2,
               $sVal in $pSeq[$mid]
             return
               if(f:apply($pEq,$sVal,$pVal) = true()) then $pSeq[$mid]
               else
                if(f:apply($pLt,$sVal,$pVal) = true())
                  then f:binRetrieve($pEq,$pLt,$pSeq,$pVal,$mid+1,$pEnd)
                else
                  f:binRetrieve($pEq,$pLt,$pSeq,$pVal,$pStart,$mid - 1)
     "
   />
  </xsl:function>

 <xsl:function name="f:binRetrieve" as="item()?">
   <xsl:param name="pSeq" as="item()+"/>
   <xsl:param name="pVal" as="item()"/>
   <xsl:param name="pStart" as="item()"/>
   <xsl:param name="pEnd" as="item()"/>

   <xsl:sequence select=
    "if($pStart gt $pEnd) then ()
       else
        for $mid in ($pStart + $pEnd) idiv 2,
             $sVal in $pSeq[$mid]
           return
             if($sVal eq $pVal) then $pSeq[$mid]
             else
                if($sVal lt $pVal)
                   then f:binRetrieve($pSeq, $pVal, $mid+1, $pEnd)
                else
                  f:binRetrieve($pSeq, $pVal, $pStart, $mid - 1)
       "/>
 </xsl:function>

</xsl:stylesheet>


And finally, the first screen of the generated concordance :o)   :


<concordance>
   <w t="abase">Job+40+11, Isa+31+4, Eze+21+26, Dan+4+37</w>
   <w t="abated">Gen+8+3, Gen+8+8, Gen+8+11, Lev+27+18, Deu+34+7, Jud+8+3</w>
   <w t="abhor">Lev+26+11, Lev+26+15, Lev+26+30, Lev+26+44, Deu+7+26,
Deu+23+7, Deu+23+7, 1 S+27+12, Job+9+31, Job+30+10, Job+42+6, Psa+5+6,
Psa+119+3, Pro+24+24, Jer+14+21, Amo+5+10, Amo+6+8, Mic+3+9</w>
   <w t="abhorred">Exo+5+21, Lev+20+23, Lev+26+43, Deu+32+19, 1
S+2+17, 2 S+16+21, 1 K+11+25, Job+19+19, Psa+22+24, Psa+78+59,
Psa+89+38, Psa+106+40, Pro+22+14, Lam+2+7, Eze+16+25, Zec+11+8</w>
   <w t="abhorrest">Isa+7+16</w>
   <w t="abhorreth">Job+33+20, Psa+10+3, Psa+36+4, Psa+107+18, Isa+49+7</w>
   <w t="abhorring">Isa+66+24</w>
   <w t="abide">Gen+19+2, Gen+24+55, Gen+29+19, Gen+44+33, Exo+16+29,
Lev+8+35, Lev+19+13, Num+22+5, Num+31+19, Num+31+23, Num+35+25,
Deu+3+19, Jos+18+5, Jos+18+5, Rut+2+8, 1 S+1+22, 1 S+5+7, 1 S+19+2, 1
S+30+21, 2 S+11+11, 2 S+15+19, 2 S+16+18, 1 K+8+13, 2 C+25+19, 2
C+32+10, Job+24+13, Job+38+40, Job+39+9, Psa+15+1, Psa+61+4, Psa+61+7,
Psa+91+1, Pro+7+11, Pro+19+23, Ecc+8+15, Jer+10+10, Jer+42+10,
Jer+49+18, Jer+49+33, Jer+50+40, Hos+3+3, Hos+3+4, Hos+11+6, Joe+2+11,
Mic+5+4, Nah+1+6, Mal+3+2</w>
   <w t="abideth">Num+31+23, 2 S+16+3, Job+39+28, Psa+49+12,
Psa+55+19, Psa+119+2, Psa+125+1, Pro+15+31, Ecc+1+4, Jer+21+9</w>
   <w t="abiding">Num+24+2, Jud+16+9, Jud+16+12, 1 S+26+19, 1 C+29+15</w>
   <w t="ability">Lev+27+8, Ezr+2+69, Neh+5+8, Dan+1+4</w>
   <w t="abjects">Psa+35+15</w>
   <w t="able">Gen+13+6, Gen+15+5, Gen+33+14, Exo+10+5, Exo+18+18,
Exo+18+21, Exo+18+23, Exo+18+25, Exo+40+35, Lev+5+7, Lev+5+11,
Lev+12+8, Lev+14+22, Lev+14+31, Lev+14+32, Lev+25+26, Lev+25+28,
Lev+25+49, Num+1+3, Num+1+20, Num+1+22, Num+1+24, Num+1+26, Num+1+28,
Num+1+30, Num+1+32, Num+1+34, Num+1+36, Num+1+38, Num+1+40, Num+1+42,
Num+1+45, Num+11+14, Num+13+30, Num+13+31, Num+14+16, Num+22+11,
Num+22+37, Num+26+2, Deu+1+9, Deu+7+24, Deu+9+28, Deu+11+25,
Deu+14+24, Deu+16+17, Jos+1+5, Jos+14+12, Jos+23+9, Jud+8+3, 1 S+6+20,
1 S+17+9, 1 S+17+33, 1 K+3+9, 1 K+9+21, 2 K+3+21, 2 K+18+23, 2
K+18+29, 1 C+5+18, 1 C+9+13, 1 C+26+8, 1 C+29+14, 2 C+2+6, 2 C+7+7, 2
C+20+6, 2 C+20+37, 2 C+25+5, 2 C+25+9, 2 C+32+13, 2 C+32+14, 2
C+32+15, Ezr+10+13, Neh+4+10, Job+41+10, Psa+18+38, Psa+21+11,
Psa+36+12, Psa+40+12, Pro+27+4, Ecc+8+17, Isa+36+8, Isa+36+14,
Isa+47+11, Isa+47+12, Jer+10+10, Jer+11+11, Jer+49+10, Lam+1+14,
Eze+7+19, Eze+33+12, Eze+46+5, Eze+46+11, Dan+2+26, Dan+3+17,
Dan+4+18, Dan+4+18, Dan+4+37, Dan+6+20, Amo+7+10, Zep+1+18</w>
   <w t="abode">Gen+29+14, Gen+49+24, Exo+24+16, Exo+40+35, Num+9+17,
Num+9+18, Num+9+20, Num+9+21, Num+9+22, Num+11+35, Num+20+1, Num+22+8,
Num+25+1, Deu+1+46, Deu+1+46, Deu+3+29, Deu+9+9, Jos+2+22, Jos+5+8,
Jos+8+9, Jud+5+17, Jud+5+17, Jud+11+17, Jud+19+4, Jud+20+47, Jud+21+2,
1 S+1+23, 1 S+7+2, 1 S+13+16, 1 S+22+6, 1 S+23+14, 1 S+23+18, 1
S+23+25, 1 S+25+13, 1 S+26+3, 1 S+30+10, 2 S+1+1, 2 S+11+12, 2 S+15+8,
1 K+17+19, 2 K+19+27, Ezr+8+15, Ezr+8+32, Isa+37+28, Jer+38+28</w>
   <w t="abodest">Jud+5+16</w>
   <w t="abolish">Isa+2+18</w>
   <w t="abolished">Isa+51+6, Eze+6+6</w>
   <w t="abominable">Lev+7+21, Lev+11+43, Lev+18+30, Lev+19+7,
Lev+20+25, Deu+14+3, 1 C+21+6, 2 C+15+8, Job+15+16, Psa+14+1,
Psa+53+1, Isa+14+19, Isa+65+4, Jer+16+18, Jer+44+4, Eze+4+14,
Eze+8+10, Eze+16+52, Mic+6+10, Nah+3+6</w>
   <w t="abominably">1 K+21+26</w>
   <w t="abomination">Gen+43+32, Gen+46+34, Exo+8+26, Exo+8+26,
Lev+7+18, Lev+11+10, Lev+11+11, Lev+11+11, Lev+11+12, Lev+11+13,
Lev+11+13, Lev+11+20, Lev+11+23, Lev+11+41, Lev+11+42, Lev+18+22,
Lev+20+13, Deu+7+25, Deu+7+26, Deu+12+31, Deu+13+14, Deu+17+1,
Deu+17+4, Deu+18+12, Deu+22+5, Deu+23+18, Deu+24+4, Deu+25+16,
Deu+27+15, 1 S+13+4, 1 K+11+5, 1 K+11+7, 1 K+11+7, 2 K+23+13, 2
K+23+13, 2 K+23+13, Psa+88+8, Pro+3+32, Pro+6+16, Pro+8+7, Pro+11+1,
Pro+11+20, Pro+12+22, Pro+13+19, Pro+15+8, Pro+15+9, Pro+15+26,
Pro+16+5, Pro+16+12, Pro+17+15, Pro+20+10, Pro+20+23, Pro+21+27,
Pro+24+9, Pro+28+9, Pro+29+27, Pro+29+27, Isa+1+13, Isa+41+24,
Isa+44+19, Isa+66+17, Jer+2+7, Jer+6+15, Jer+8+12, Jer+32+35,
Eze+16+50, Eze+18+12, Eze+22+11, Eze+33+26, Dan+11+31, Dan+12+11,
Mal+2+11</w>
   <w t="abominations">Lev+18+26, Lev+18+27, Lev+18+29, Deu+18+9,
Deu+18+12, Deu+20+18, Deu+29+17, Deu+32+16, 1 K+14+24, 2 K+16+3, 2
K+21+2, 2 K+21+11, 2 K+23+24, 2 C+28+3, 2 C+33+2, 2 C+34+33, 2 C+36+8,
2 C+36+14, Ezr+9+1, Ezr+9+11, Ezr+9+14, Pro+26+25, Isa+66+3, Jer+4+1,
Jer+7+10, Jer+7+30, Jer+13+27, Jer+32+34, Jer+44+22, Eze+5+9,
Eze+5+11, Eze+6+9, Eze+6+11, Eze+7+3, Eze+7+4, Eze+7+8, Eze+7+9,
Eze+7+20, Eze+8+6, Eze+8+6, Eze+8+9, Eze+8+13, Eze+8+15, Eze+8+17,
Eze+9+4, Eze+11+18, Eze+11+21, Eze+12+16, Eze+14+6, Eze+16+2,
Eze+16+22, Eze+16+36, Eze+16+43, Eze+16+47, Eze+16+51, Eze+16+51,
Eze+16+58, Eze+18+13, Eze+18+24, Eze+20+4, Eze+20+7, Eze+20+8,
Eze+20+30, Eze+22+2, Eze+23+36, Eze+33+29, Eze+36+31, Eze+43+8,
Eze+44+6, Eze+44+7, Eze+44+13, Dan+9+27, Hos+9+10, Zec+9+7</w>
   <w t="abound">Pro+28+20</w>
   <w t="aboundeth">Pro+29+22</w>
   <w t="abounding">Pro+8+24</w>
   <w t="about">Gen+23+17, Gen+35+5, Gen+37+7, Gen+38+24, Gen+39+11,
Gen+41+25, Gen+41+28, Gen+41+42, Gen+41+48, Gen+42+24, Gen+46+34,
Exo+7+24, Exo+9+18, Exo+12+37, Exo+13+18, Exo+16+13, Exo+19+12,
Exo+19+23, Exo+25+11, Exo+25+24, Exo+25+25, Exo+25+25, Exo+27+17,
Exo+28+32, Exo+28+33, Exo+28+33, Exo+28+34, Exo+29+16, Exo+29+20,
Exo+30+3, Exo+30+3, Exo+32+28, Exo+37+2, Exo+37+11, Exo+37+12,
Exo+37+12, Exo+37+26, Exo+37+26, Exo+38+16, Exo+38+20, Exo+38+31,
Exo+38+31, Exo+39+23, Exo+39+25, Exo+39+26, Exo+40+8, Exo+40+33,
Lev+1+5, Lev+1+11, Lev+3+2, Lev+3+8, Lev+3+13, Lev+6+5, Lev+7+2,
Lev+8+15, Lev+8+19, Lev+8+24, Lev+9+12, Lev+9+18, Lev+14+41,
Lev+16+18, Lev+25+31, Lev+25+44, Num+1+50, Num+1+53, Num+2+2,
Num+3+26, Num+3+37, Num+4+4, Num+4+14, Num+4+26, Num+4+32, Num+11+8,
Num+11+24, Num+11+31, Num+11+32, Num+16+24, Num+16+34, Num+16+49,
Num+22+4, Num+32+33, Num+34+12, Num+35+2, Num+35+4, Deu+6+14,
Deu+12+10, Deu+13+7, Deu+17+14, Deu+21+2, Deu+25+19, Deu+31+21,
Deu+32+10, Jos+2+5, Jos+3+4, Jos+6+3, Jos+6+11, Jos+6+15, Jos+7+3,
Jos+7+4, Jos+7+5, Jos+8+12, Jos+10+13, Jos+11+6, Jos+15+12, Jos+16+6,
Jos+18+20, Jos+19+8, Jos+21+11, Jos+21+42, Jos+21+44, Jos+23+1,
Jud+2+12, Jud+2+14, Jud+3+29, Jud+7+21, Jud+8+10, Jud+8+26, Jud+9+49,
Jud+16+27, Jud+17+2, Jud+19+22, Jud+20+5, Jud+20+29, Jud+20+31,
Jud+20+39, Jud+20+43, Rut+1+4, Rut+1+19, Rut+2+17, 1 S+1+20, 1 S+4+2,
1 S+4+20, 1 S+5+8, 1 S+5+8, 1 S+5+9, 1 S+5+10, 1 S+9+13, 1 S+9+16, 1
S+9+22, 1 S+9+26, 1 S+13+15, 1 S+14+2, 1 S+14+14, 1 S+14+21, 1
S+15+12, 1 S+15+27, 1 S+17+42, 1 S+20+12, 1 S+21+5, 1 S+22+2, 1
S+22+6, 1 S+22+7, 1 S+22+17, 1 S+23+13, 1 S+23+26, 1 S+25+13, 1
S+25+38, 1 S+26+5, 1 S+26+7, 1 S+31+9, 2 S+3+12, 2 S+4+5, 2 S+5+9, 2
S+7+1, 2 S+14+20, 2 S+18+15, 2 S+20+26, 2 S+22+6, 2 S+22+12, 2 S+24+6,
1 K+2+5, 1 K+2+15, 1 K+3+1, 1 K+4+24, 1 K+4+31, 1 K+5+3, 1 K+6+5, 1
K+6+5, 1 K+6+5, 1 K+6+6, 1 K+6+29, 1 K+7+12, 1 K+7+15, 1 K+7+18, 1
K+7+20, 1 K+7+23, 1 K+7+23, 1 K+7+24, 1 K+7+24, 1 K+7+36, 1 K+8+14, 1
K+18+32, 1 K+18+35, 1 K+19+2, 1 K+20+6, 1 K+22+6, 1 K+22+36, 2 K+1+8,
2 K+3+25, 2 K+6+14, 2 K+6+17, 2 K+7+1, 2 K+7+18, 2 K+8+21, 2 K+11+7, 2
K+11+8, 2 K+11+11, 2 K+17+15, 2 K+23+5, 2 K+25+1, 2 K+25+4, 2 K+25+10,
2 K+25+17, 1 C+4+33, 1 C+6+55, 1 C+9+27, 1 C+10+9, 1 C+11+8, 1 C+11+8,
1 C+15+22, 1 C+18+17, 1 C+22+9, 1 C+28+12, 2 C+2+9, 2 C+4+2, 2 C+4+3,
2 C+4+3, 2 C+13+13, 2 C+14+7, 2 C+14+14, 2 C+15+15, 2 C+17+9, 2
C+17+10, 2 C+18+31, 2 C+18+34, 2 C+20+30, 2 C+23+2, 2 C+23+7, 2
C+23+10, 2 C+26+6, 2 C+33+14, 2 C+34+6, Ezr+1+6, Ezr+10+15, Neh+5+17,
Neh+6+16, Neh+12+28, Neh+12+29, Neh+13+21, Job+1+5, Job+1+10,
Job+1+10, Job+1+10, Job+8+17, Job+10+8, Job+11+18, Job+16+13,
Job+19+12, Job+20+23, Job+22+10, Job+29+5, Job+30+18, Job+37+12,
Job+40+22, Job+41+14, Psa+3+6, Psa+7+7, Psa+17+9, Psa+18+5, Psa+18+11,
Psa+27+6, Psa+32+7, Psa+32+10, Psa+34+7, Psa+40+12, Psa+44+13,
Psa+48+12, Psa+48+12, Psa+49+5, Psa+50+3, Psa+55+10, Psa+59+6,
Psa+59+14, Psa+73+6, Psa+76+11, Psa+78+28, Psa+79+3, Psa+79+4,
Psa+88+17, Psa+88+17, Psa+89+7, Psa+89+8, Psa+97+2, Psa+97+3,
Psa+109+3, Psa+118+10, Psa+118+11, Psa+118+11, Psa+118+12, Psa+125+2,
Psa+125+2, Psa+128+3, Psa+139+11, Psa+140+9, Psa+142+7, Pro+1+9,
Pro+3+3, Pro+6+21, Pro+20+19, Ecc+1+6, Ecc+1+6, Ecc+2+20, Ecc+12+5,
Son+3+2, Son+3+3, Son+3+7, Son+5+7, Son+7+2, Isa+3+18, Isa+15+8,
Isa+23+16, Isa+26+20, Isa+28+27, Isa+29+3, Isa+42+25, Isa+49+18,
Isa+50+11, Isa+60+4, Jer+1+15, Jer+2+36, Jer+4+17, Jer+6+3, Jer+12+9,
Jer+14+18, Jer+17+26, Jer+21+14, Jer+25+9, Jer+31+22, Jer+31+39,
Jer+32+44, Jer+33+13, Jer+41+14, Jer+46+5, Jer+46+14, Jer+48+17,
Jer+48+39, Jer+49+5, Jer+50+14, Jer+50+15, Jer+50+29, Jer+50+32,
Jer+51+2, Jer+52+4, Jer+52+7, Jer+52+14, Jer+52+22, Jer+52+23,
Lam+1+17, Lam+2+3, Lam+2+22, Lam+3+7, Eze+1+4, Eze+1+18, Eze+1+27,
Eze+1+27, Eze+1+28, Eze+4+2, Eze+5+2, Eze+5+5, Eze+5+6, Eze+5+7,
Eze+5+7, Eze+5+12, Eze+5+14, Eze+5+15, Eze+6+5, Eze+6+13, Eze+8+10,
Eze+8+16, Eze+10+12, Eze+11+12, Eze+12+14, Eze+16+10, Eze+16+37,
Eze+16+57, Eze+16+57, Eze+23+24, Eze+27+11, Eze+27+11, Eze+28+24,
Eze+28+26, Eze+31+4, Eze+32+22, Eze+32+23, Eze+32+24, Eze+32+25,
Eze+32+26, Eze+34+26, Eze+36+4, Eze+36+7, Eze+36+36, Eze+37+2,
Eze+40+5, Eze+40+14, Eze+40+16, Eze+40+16, Eze+40+17, Eze+40+25,
Eze+40+29, Eze+40+30, Eze+40+33, Eze+40+36, Eze+40+43, Eze+41+5,
Eze+41+6, Eze+41+7, Eze+41+7, Eze+41+7, Eze+41+8, Eze+41+10,
Eze+41+11, Eze+41+12, Eze+41+16, Eze+41+16, Eze+41+17, Eze+41+19,
Eze+42+15, Eze+42+16, Eze+42+17, Eze+42+19, Eze+42+20, Eze+43+12,
Eze+43+13, Eze+43+17, Eze+43+17, Eze+43+20, Eze+45+1, Eze+45+2,
Eze+45+2, Eze+46+23, Eze+46+23, Eze+46+23, Eze+47+2, Eze+48+35,
Dan+5+7, Dan+5+16, Dan+5+29, Dan+5+31, Dan+9+16, Dan+9+21, Hos+7+2,
Hos+11+12, Joe+3+11, Joe+3+12, Amo+3+11, Jon+2+3, Jon+2+5, Jon+2+5,
Jon+2+5, Jon+2+6, Nah+3+8, Hab+1+4, Zec+2+5, Zec+7+7, Zec+9+8,
Zec+12+2, Zec+12+6, Zec+14+14</w>
   <w t="above">Gen+1+7, Gen+1+20, Gen+3+14, Gen+3+14, Gen+6+16,
Gen+7+17, Gen+27+39, Gen+28+13, Gen+48+22, Gen+49+25, Gen+49+26,
Exo+18+11, Exo+19+5, Exo+20+4, Exo+25+21, Exo+25+22, Exo+26+14,
Exo+26+24, Exo+28+27, Exo+28+28, Exo+29+13, Exo+29+22, Exo+30+14,
Exo+36+19, Exo+39+20, Exo+39+21, Exo+40+19, Exo+40+20, Lev+3+4,
Lev+3+10, Lev+3+15, Lev+4+9, Lev+7+4, Lev+8+16, Lev+8+25, Lev+9+10,
Lev+9+19, Lev+11+21, Lev+27+7, Num+3+49, Num+4+25, Num+12+3, Num+16+3,
Deu+4+39, Deu+5+8, Deu+7+6, Deu+7+14, Deu+10+15, Deu+14+2, Deu+17+20,
Deu+25+3, Deu+26+19, Deu+28+1, Deu+28+13, Deu+28+43, Deu+30+5,
Jos+2+11, Jos+3+13, Jos+3+16, Jud+5+24, Jud+5+24, 1 S+2+29, 2 S+22+17,
2 S+22+49, 1 K+7+3, 1 K+7+11, 1 K+7+20, 1 K+7+25, 1 K+7+29, 1 K+7+31,
1 K+8+7, 1 K+8+23, 1 K+14+9, 1 K+14+22, 1 K+16+30, 2 K+21+11, 2
K+25+28, 1 C+5+2, 1 C+16+25, 1 C+23+27, 1 C+27+6, 1 C+29+3, 1 C+29+11,
2 C+2+5, 2 C+4+4, 2 C+5+8, 2 C+11+21, 2 C+24+20, 2 C+25+5, 2 C+34+4,
Neh+3+28, Neh+7+2, Neh+8+5, Neh+9+5, Neh+12+37, Neh+12+39, Neh+12+39,
Neh+12+39, Est+2+17, Est+3+1, Est+5+11, Job+3+4, Job+18+16, Job+28+18,
Job+31+2, Job+31+28, Psa+8+1, Psa+10+5, Psa+18+16, Psa+18+48,
Psa+27+6, Psa+45+7, Psa+50+4, Psa+57+5, Psa+57+5, Psa+57+11,
Psa+57+11, Psa+78+23, Psa+95+3, Psa+96+4, Psa+97+9, Psa+97+9,
Psa+99+2, Psa+103+11, Psa+104+6, Psa+108+4, Psa+108+5, Psa+108+5,
Psa+113+4, Psa+113+4, Psa+119+7, Psa+119+7, Psa+135+5, Psa+136+6,
Psa+137+6, Psa+138+2, Psa+144+7, Psa+148+4, Psa+148+13, Pro+8+28,
Pro+15+24, Pro+31+10, Ecc+2+7, Ecc+3+19, Isa+2+2, Isa+7+11, Isa+14+13,
Isa+14+14, Isa+45+8, Jer+4+28, Jer+15+8, Jer+17+9, Jer+31+37,
Jer+35+4, Jer+52+32, Lam+1+13, Eze+1+22, Eze+1+26, Eze+1+26, Eze+10+1,
Eze+10+19, Eze+11+22, Eze+16+43, Eze+29+15, Eze+31+5, Eze+37+8,
Eze+41+17, Eze+41+20, Dan+6+3, Dan+11+5, Dan+11+36, Dan+11+37,
Amo+2+9, Mic+4+1, Nah+3+16</w>
   <w t="abroad">Gen+10+18, Gen+11+4, Gen+11+8, Gen+11+9, Gen+15+5,
Gen+19+17, Gen+28+14, Exo+5+12, Exo+9+29, Exo+9+33, Exo+12+46,
Exo+21+19, Exo+40+19, Lev+13+7, Lev+13+12, Lev+13+22, Lev+13+27,
Lev+14+8, Lev+18+9, Num+11+32, Deu+23+10, Deu+23+12, Deu+23+13,
Deu+24+11, Deu+24+11, Deu+32+11, Jud+12+9, Jud+12+9, 1 S+9+26, 1
S+30+16, 2 S+22+43, 1 K+2+42, 2 K+4+3, 1 C+13+2, 1 C+14+13, 2 C+26+8,
2 C+26+15, 2 C+29+16, 2 C+31+5, Neh+1+8, Est+1+17, Est+3+8, Job+4+11,
Job+15+23, Job+40+11, Psa+41+6, Psa+77+17, Pro+5+16, Isa+24+1,
Isa+28+25, Isa+44+24, Jer+6+11, Lam+1+20, Eze+34+21, Zec+1+17,
Zec+2+6</w>
   <w t="absent">Gen+31+49</w>
   <w t="abundance">Deu+28+47, Deu+33+19, 1 S+1+16, 2 S+12+30, 1
K+1+19, 1 K+1+25, 1 K+10+10, 1 K+10+27, 1 K+18+41, 1 C+22+3, 1 C+22+3,
1 C+22+4, 1 C+22+14, 1 C+22+15, 1 C+29+2, 1 C+29+21, 2 C+1+15, 2
C+2+9, 2 C+4+18, 2 C+9+1, 2 C+9+9, 2 C+9+27, 2 C+11+23, 2 C+14+15, 2
C+15+9, 2 C+17+5, 2 C+18+1, 2 C+18+2, 2 C+20+25, 2 C+24+11, 2 C+29+35,
2 C+31+5, 2 C+32+5, 2 C+32+29, Neh+9+25, Est+1+7, Job+22+11,
Job+36+31, Job+38+34, Psa+37+11, Psa+52+7, Psa+72+7, Psa+105+30,
Ecc+5+10, Ecc+5+12, Isa+7+22, Isa+15+7, Isa+47+9, Isa+60+5, Isa+66+11,
Jer+33+6, Eze+16+49, Eze+26+10, Zec+14+14</w>
   <w t="abundant">Exo+34+6, Isa+56+12, Jer+51+13</w>




Cheers,
Dimitre Novatchev
---------------------------------------
To avoid situations in which you might make mistakes may be the
biggest mistake of all.

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.