以下字符串使用切换在我的源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中完成?
答案 0 :(得分:1)
由于text
的子节点是交替的text(),后跟format
的对称endformat
和text()
,我认为您可以将节点列表传递给xsl :递归调用模板,处理两个起始节点和两个结束节点,并通过前导2节点缩短列表,每次追踪2个节点。但我不清楚你的文件的语法,所以这可能是不可能的。