使用XSLT将文本转换为XML中的元素

时间:2013-06-12 09:58:06

标签: xslt

我目前正在将XML从一个CMS迁移到另一个CMS,并且需要将一些文本转换为元素。由于系统的工作原理,一些编辑器只能输入转义文本。挑战是替换其中一些转义元素并将它们转换为有效的XML元素。

源文件:

<p>Press the &lt;button-name&gt;Select key &lt;/button-name&gt;to show more information.</p>
<p>Press the &lt;button-name&gt;Back key&lt;/button-name&gt; to save the 
values.</p>
<p>When the storage is completed, the &lt;product-name/&gt; machine
displays:</p>
<p>&lt;attention&gt;
&lt;display-text translate="no"&gt;STORAGE COMPLETED
Press BACK to exit&lt;/display-text&gt;
&lt;/attention&gt;</p>

我想做什么

 Replace &lt;button-name&gt; with <gui>
 Replace &lt;button-name&gt; with <kt.in name="custom-name"/>
 Keeping other escaped elements.

我想要的XML

<p>Press the <gui>Select key</gui>to 
   show more information.</p>
<p>Press the <gui>Back key</gui> 
   to save the calibrations values.</p>
<p>When the storage is completed, the <kt.in name="custom-name"/> machine
   displays:</p>
<p>&lt;attention&gt; &lt;display-text translate="no"&gt;STORAGE COMPLETED 
 Press BACK to exit&lt;/display-text&gt;
&lt;/attention&gt;</p>

我尝试使用基于字符串的搜索和替换,但因为我想要一个合适的XML元素作为输出,所以不会这样做。

1 个答案:

答案 0 :(得分:0)

这可能仅适用于基于字符串的搜索和替换 - 取决于您要切换到xml的文本“标签”的数量。我看到的更大问题实际上是将其全部保存在正确的XML元素中。

我不认为你可以保留这个,而不用写一个小工具来读取文本元素之间的字符串,例如。

&lt;button-name&gt;

并将它们复制到Object的正确变量中,然后将其解析为XML符合元素。

它并不真正取决于您喜欢的语言,因为应该有足够的object-xml parsers available

如果只是更改标签,您还可以将文本的编码切换为

&lt; would turn into -> <

然后过滤&lt;&gt;之间的任何内容交换你想要的那些,例如按钮名称为gui

希望我能给你一个想法..