ОБСУЖДЕНИЕ

Вопрос по Xslt.

6 ответов 5,3 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
Подскажите, такая задача решается через XSLT или придётся писать преобразование на ЯВУ?

Некоторые элементы входного XML (некоторые - определяется текстовым содержанием элемента) нужно преобразовать в два элемента, находящихся в разных местах выходного дерева.
Грубый пример - программу на C++ преобразовать в программу на Pascal. Ключевой момент - все описания переменных необходимо вытащить в начало документа. То есть когда мы доходим до определённых элементов (объявлений переменных), преобразование должно часть выхода записать "вот сюда, где мы сейчас", а часть - "вон туда".
 
Да бог с ним. Считайте, что она в xml.
Код:
<expression>
int a=10;
</expression>
<expression>
int b=20;
</expression>
<expression>
int c;
</expression>
<expression>
c=a;
</expression>
<expression>
a=b;
</expression>
<expression>
b=c;
</expression>
Ну вот набросал первое, что пришло в голову. Нужно все "int a;" вытащить в начало документа.
 
Охх. Ну допустим так:
Код:
<declarations>
var a: integer;
var b: integer;
var c: integer;
</declarations>
<program>
.....
<expression>
a=10;
</expression>
<expression>
b=20;
</expression>
<expression>
c=a;
</expression>
<expression>
a=b;
</expression>
<expression>
b=c;
</expression>
...
</program>
Пример утрированный, но суть показывает. Просто я не понимаю, как в XSLT писать "не сюда"? Или делать двойной проход, forward looking?
 
О батенька этак вы свой компилятор сооружаете. Тогда надо ачинать с азов.
 
Да не компилятор. Я просто пример привёл преобразования. Нужно часть преобразованных данных записать в начало документа.
 
Тут нужны регулярные выражения.
 
хм.... а можно увидеть пример не утрированный а реальный?
Какой нибудь реальный документ во что должен быть преобразован?