xsl-list
[Top] [All Lists]

[xsl] problem with transforming mixed content

2020-08-14 21:16:07
Dear list,

I would like to ask for your help with the following mixed-content problem. I am receiving, from an external source, data in the following form:

<title>THE TITLE OF THE BOOK WITH SOME <i>ITALICS</i> AND SOME MORE WORDS: THE SUBTITLE OF THE BOOK WITH SOME <i>ITALICS</i></title>

What I would like to do is
1) separate the title from the subtitle (i.e., divide the data at the colon) and put each in a separate element node;
2) all the while maintaining the <i> markup;
3) and perform certain string manipulations on all of the text nodes; for the purposes of this post, I will use the example of converting upper-case to lower-case.

So the desired output is the following:

<title>the title of the book with some <i>italics</i> and some more words</title>
<subtitle>the subtitle of the book with some <i>italics</i></subtitle>

How can this be done?

I know that I can perform string manipulations while maintaining the <i> markup with templates, i.e., <xsl:template match="text()"/> and <xsl:template match="i"/>. But in this case I do not know how to divide the data at the colon. And I know that I can divide the data at the colon with <xsl:value-of select="substring-before(.,': ')"/>, but then I loose the <i> markup. So I am at a loss.

Thanks in advance for your help!
Wolfhart
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--

<Prev in Thread] Current Thread [Next in Thread>