Subject: [xsl] child nodes and regex From: Terry Ofner <tdofner@xxxxxxxxx> Date: Thu, 18 Jun 2009 17:04:18 -0400 |
I am having trouble outputting child nodes as part of regex matching-substring. XML input contains the following: <question> <text><p> 32 What is the most effective way to revise sentence 1?</p></text> <choice> F insert a comma after <i>American</i></choice> <choice> G use dashes . . . was Samuel Clemens</choice> <choice> H insert a period after Clemens</choice> <choice> J use quotation marks. . . was Samuel Clemens</choice> </question> I am attempting to use the capital letter following each <choice> opening element to create the following elements: <choice-f>insert a comma after <i>American</i></choice-f> <choice-g>use dashes to set off the clause whose real name was Samuel Clemens</choice-g> etc. Here is the relevant template from the 2.0 stylesheet: <xsl:template match="choice"> <xsl:analyze-string select="." regex="^ ?([A-J]) ?(.*)"> <xsl:matching-substring> <xsl:variable name="choiceLetter"> <xsl:value-of select="lower-case(regex-group(1))"/></xsl:variable> <xsl:element name="choice-{$choiceLetter}"> <xsl:value-of select="regex-group(2)"/> </xsl:element> </xsl:matching-substring> </xsl:analyze-string> </xsl:template> This works up to a point. The only problem is that it strips out the <i> elements, leaving the text in place. Notice in this output that <i> elements have been removed around American: <question><text><p> 32 What is the most effective way to revise sentence 1?</p></text> <choices> <choice-f>insert a comma after American</choice-f> <choice-g>use dashes . . . was Samuel Clemens</choice-g> <choice-h>insert a period after Clemens</choice-h> <choice-j>use quotation . . . was Samuel Clemens</choice-j> </choices> . . . </question> I seem to recall matching choice/text() in prior cases. But I have not been able to get that to work properly in this current situation. Any suggestions would be most appreciated. Terry Ofner
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] XSL with namespace from N, Emmanuel Bégué | Thread | Re: [xsl] child nodes and regex, Mike Sokolov |
Re: [xsl] redirect output of transf, Mike Sokolov | Date | Re: [xsl] child nodes and regex, Mike Sokolov |
Month |