XSL:切换的跟踪元素

时间:2009-11-21 01:48:42

标签: xslt

以下字符串使用切换在我的源XML中编码,我希望它更改为具有格式信息的节点。 (这是对WordprocessingML的XLIFF。)

“文字,粗体文字,粗体和斜体文字,粗体文字,纯文字。”

源XML:

<text>
Text  
<format id="1" type="bold" />
bold text,  
<format id="2" type="italics" /> 
bold and italics text,
<endformat id="2" />
bold text,
<endformat id="1" />
plain text.
</text>

我需要:

<run>
   <format></format>
   <text>Text, </text>
</run>
<run>
   <format><b/></format>
   <text>bold text, </run>
</run>
<run>
   <format><b/><i/></format>
   <text>bold and italics text, </run>
</run>
<run>
   <format><b/></format>
   <text>bold text, </run>
</run>
<run>
   <format></format>
   <text>plain text.</run>
</run>

如果我使用的是过程语言,我会保留一份有关格式化活动的运行记录,并相应地写出<format>元素。

但我如何在XSL中完成?

1 个答案:

答案 0 :(得分:1)

由于text的子节点是交替的text(),后跟format的对称endformattext(),我认为您可以将节点列表传递给xsl :递归调用模板,处理两个起始节点和两个结束节点,并通过前导2节点缩短列表,每次追踪2个节点。但我不清楚你的文件的语法,所以这可能是不可能的。