Вопрос по Xslt.

  • Автор темы Xellos
  • Дата начала
X

Xellos

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

Некоторые элементы входного XML (некоторые - определяется текстовым содержанием элемента) нужно преобразовать в два элемента, находящихся в разных местах выходного дерева.
Грубый пример - программу на C++ преобразовать в программу на Pascal. Ключевой момент - все описания переменных необходимо вытащить в начало документа. То есть когда мы доходим до определённых элементов (объявлений переменных), преобразование должно часть выхода записать "вот сюда, где мы сейчас", а часть - "вон туда".
 
X

Xellos

Гость
#2
Да бог с ним. Считайте, что она в 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;" вытащить в начало документа.
 
X

Xellos

Гость
#3
Охх. Ну допустим так:
Код:
<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?
 
E

etc

Гость
#4
О батенька этак вы свой компилятор сооружаете. Тогда надо ачинать с азов.
 
X

Xellos

Гость
#5
Да не компилятор. Я просто пример привёл преобразования. Нужно часть преобразованных данных записать в начало документа.
 
M

morfius

Гость
#7
хм.... а можно увидеть пример не утрированный а реальный?
Какой нибудь реальный документ во что должен быть преобразован?