Subject: RE: grouping based on string but with child nodes
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 13 Oct 2008 16:49:46 +0100
|
When we've looked at this kind of problem in the past, there have generally
been two styles of solution:
(a) convert the character-markup into XML-markup, then use structural
grouping
(b) convert the XML-markup into character-markup, then use
xsl:analyze-string
In this case (a) seems a better approach. First turn "||" into <newTitle/>
elements using analyze-string, then do a group-starting-with="newTitle".
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: James Cummings [mailto:cummings.james@xxxxxxxxx]
> Sent: 13 October 2008 16:12
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: grouping based on string but with child nodes
>
> Hiya,
>
> I have some old EAD XML that I'm trying to convert to a
> slightly better form and what I want to take is something like this:
>
> <unittitle>
> <title>Calendarial rules. Prognostics. || Alcuin,
> <emph render="italic">Quaestiones in Genesim</emph>. ||
> Glossaries. || <emph render="italic">Ps</emph>.-Cicero,
> <emph render="italic">Synonyma ad Lucium
> Veturium</emph>, with added Latin-Old English
> glossaries extracted from the Grammar and Glossary of Flfric.
> </title>
> <!-- other elements -->
> </unittitle>
>
> where several titles are grouped together into a single title
> element and delineated by two vertical bars || and split this
> into properly grouped elements without loss of the <emph>
> elements. I'll be combining this with some other similarly
> split up data (about time periods of the works) into a new
> structure. So desired output (in a variable since I then
> need to count them and create those other structures one for
> each of these) something like:
>
> <unittitle>
> <title>Calendarial rules. Prognostics.</title>
> <title>Alcuin, <emph render="italic">Quaestiones in
> Genesim</emph>. </title>
> <title>Glossaries. </title>
> <title>
> <emph render="italic">Ps</emph>.-Cicero,
> <emph render="italic">Synonyma ad Lucium Veturium</emph>,
> with added Latin-Old English glossaries extracted
> from the Grammar
> and Glossary of Flfric. </title>
> <!-- other elements -->
> </unittitle>
>
> I've been assuming that this is a two-pass problem where I
> have to replace the '||' with some empty XML element and
> then group-by that element? If that is the case what is the
> best way to replace these for grouping? Or is it possible to
> do this all-in-one? XSLT2 solution obviously desired to
> avoid too much recursion. :-)
>
> Any suggestions?
| Current Thread |
|
Michael Kay - 13 Oct 2008 15:50:12 -0000 <=
|
|