|
Subject: [xsl] Getting text nodes from the current-group() From: "Rick Quatro rick@xxxxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Wed, 9 May 2018 15:11:44 -0000 |
Hi,
I have input XML that is flat and I am trying to group on one of the
elements. I am able to group, but I don't know how to get the text nodes
from the group. Here is an input snippet:
<?xml version="1.0" encoding="UTF-8"?>
<div type="book" osisID="Matt" canonical="true">
<milestone type="x-usfm-toc1" n="El Evangelio De Nuestro Seqor Jesu
Cristo Segzn San Mateo" />
<milestone type="x-usfm-toc2" n="San Mateo" />
<milestone type="x-usfm-toc3" n="Mat" />
<!-- mt --><title type="main">EL EVANGELIO DE NUESTRO SEQOR JESU CRISTO
SEGZN SAN MATEO</title>
<chapter sID="Matt.1" osisID="Matt.1" n="1" />
<!-- cl --><milestone type="x-chapterLabel" n="CAPITULO 1" />
<verse sID="Matt.1.1" n="1" />Libro de la generacisn de Jesu Cristo,
hijo de David, hijo de Abraham.
<verse eID="Matt.1.1" />
<verse sID="Matt.1.2" n="2" />Abraham engendrs a Isaac; e Isaac engendrs
a Jacob; y Jacob engendrs a Jzdas, y a sus hermanos;
<verse eID="Matt.1.2" />
<verse sID="Matt.1.3" n="3" />Y Jzdas engendrs de Tamar a Fares y a
Zara; y Fares engendrs a Esrom; y Esrom engendrs a Aram;
<verse eID="Matt.1.3" />
<verse sID="Matt.1.4" n="4" />Y Aram engendrs a Aminadab; y Aminadab
engendrs a Naassn; y Naassn engendrs a Salmsn;
<verse eID="Matt.1.4" />
<verse sID="Matt.1.5" n="5" />Y Salmsn engendrs de Raab a Booz; y Booz
engendrs de Rut a Obed; y Obed engendrs a Jessi;
<verse eID="Matt.1.5" />
<verse sID="Matt.1.6" n="6" />Y Jessi engendrs al rey David; y el rey
David engendrs a Salomsn de la <transChange type="added">que fue
mujer</transChange> de Urmas;
<verse eID="Matt.1.6" />
</div>
My current stylesheet:
<?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:output method="text"/>
<xsl:template match="/div[@osisID='Matt']">
<xsl:for-each-group select="*" group-starting-with="verse[@sID]">
<xsl:apply-templates select="current-group()[self::title]"/>
<xsl:apply-templates select="current-group()[not(self::title or
self::verse[@eID])]"/>
</xsl:for-each-group>
</xsl:template>
<xsl:template match="chapter[@n]">
<xsl:text>Capitulo </xsl:text><xsl:value-of
select="@n"/><xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="verse[@n]">
<xsl:value-of select="@n"/><xsl:text>
</xsl:text><xsl:text>
</xsl:text>
</xsl:template>
<xsl:template match="title">
<xsl:apply-templates/><xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
My output will be text; here is the current output:
EL EVANGELIO DE NUESTRO SEQOR JESU CRISTO SEGZN SAN MATEO
Capitulo 1
1
2
3
4
5
6
que fue mujer
Of course, I want the text nodes as well. A slight wrinkle is that I may
want to preserve the tagging around any children of the text nodes, like
this (verse 6):
EL EVANGELIO DE NUESTRO SEQOR JESU CRISTO SEGZN SAN MATEO
Capitulo 1
1 Libro de la generacisn de Jesu Cristo, hijo de David, hijo de Abraham.
2 Abraham engendrs a Isaac; e Isaac engendrs a Jacob; y Jacob engendrs a
Jzdas, y a sus hermanos;
3 Y Jzdas engendrs de Tamar a Fares y a Zara; y Fares engendrs a Esrom; y
Esrom engendrs a Aram;
4 Y Aram engendrs a Aminadab; y Aminadab engendrs a Naassn; y Naassn
engendrs a Salmsn;
5 Y Salmsn engendrs de Raab a Booz; y Booz engendrs de Rut a Obed; y Obed
engendrs a Jessi;
6 Y Jessi engendrs al rey David; y el rey David engendrs a Salomsn de la
<transChange type="added">que fue mujer</transChange> de Urmas;
Thank you in advance.
Rick
Rick Quatro
Carmen Publishing Inc.
rick@xxxxxxxxxxxxxxx
585-366-4017
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] oXygen XSLT output setup , Charles Muller acmul | Thread | Re: [xsl] Getting text nodes from t, David Carlisle d.p.c |
| Re: [xsl] streaming XSLT creating a, Martin Honnen martin | Date | Re: [xsl] Getting text nodes from t, David Carlisle d.p.c |
| Month |