2009-11-21 15 views
0

Следующая строка получает кодировку в моем исходном XML с помощью переключателей, и я хочу, чтобы она была изменена на узлы с информацией о форматировании. (Это XLIFF для WordprocessingML.)XSL: Элементы отслеживания, которые переключаются

«Текст, полужирный текст, полужирный и курсивный текст, полужирный текст, обычный текст».

Источник 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

Поскольку дочерние узлы text чередующиеся текст(), а затем format с симметричным endformat и text() Я думаю, что вы можете передать список узлов в XSL: вызов-шаблон рекурсивно, обработка двух стартовых узлов и 2 конечных узлов и сокращая список ведущими двумя узлами и каждый раз обходя 2 узла. Но я не понимаю синтаксиса вашего файла, поэтому это может быть невозможно.

Смежные вопросы