Subject: [xsl] recursive replacing strings with nodes From: James Cummings <james+xsl@xxxxxxxxxxxxxxxxx> Date: Fri, 19 Feb 2010 11:05:09 +0000 |
Ok, I've been beating my brains out against this one for awhile trying recursive analyze-string and replace() techniques in XSLT2 but just can't get it to do what I want. Let's say I have some input like: ==== <root> <ab type="foo"> <seg>abc def abc+def</seg><lb/> <seg>+def abcdef foo+def=blah</seg><lb/> <seg>foo+def=blah</seg> </ab> <ab type="foo"> <seg>ab de ac+def</seg><lb/> <seg>+cdef abdef foo+def=blah</seg><lb/> <seg>foo+cdef=blah</seg> </ab> </root> ==== What I want to do is go through a lookup table of replacements for certain strings in the text of the seg elements. The replacements are stored something like: ==== <root> <choice> <abbr>abc</abbr> <expan> <w>ab<m>c</m></w> </expan> </choice> <choice> <abbr>foo+def=blah</abbr> <expan> <w>foo<m>def</m></w><w type="erg">blah</w> </expan> </choice> <choice> <abbr>+def</abbr> <expan> <w>de<m>f</m></w> </expan> </choice> </root> ==== But of course, the reason my replace() solution is failing is that I want to replace the strings in <seg> with richer markup, not just output strings. Each time I come across the content of an <abbr> in the current <seg> (which should have no internal markup) I want to replace it with a copy-of the content of the <expan>, but continue to process the <seg> in case there are other matches that I've missed. If I've done my eyeballed replacements correctly the following should be the output: ==== <root> <ab type="foo"> <seg><w>ab<m>c</m></w> def <w>ab<m>c</m></w><w>de<m>f</m></w></seg><lb/> <seg><w>de<m>f</m></w> <w>ab<m>c</m></w>def <w>foo<m>def</m></w><w type="erg">blah</w></seg><lb/> <seg><w>foo<m>def</m></w><w type="erg">blah</w></seg> </ab> <ab type="foo"> <seg>ab de ac<w>de<m>f</m></w></seg><lb/> <seg>+cdef abdef <w>foo<m>def</m></w><w type="erg">blah</w></seg><lb/> <seg>foo+cdef=blah</seg> </ab> </root> ==== Any suggestions? I'm sure I'm not the first person to do this, but googling and trawling the archives turned up similar but significantly different problems. -James
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Noobie: normalize <b><a>., Florent Georges | Thread | Re: [xsl] recursive replacing strin, Martin Honnen |
Re: [xsl] Noobie: normalize <b><a>., Syd Bauman | Date | Re: [xsl] recursive replacing strin, Martin Honnen |
Month |