Прежде всего, я хочу express восхищаться всеми, кто понимает, что происходит при обработке XSLT.
Обычно я нахожу в StackOverflow какой-нибудь пример, который делает то, что мне нужно, немного настраиваю его и продолжаю работать с C кодированием :), но на этот раз я застрял и не понимаю почему что-то не работает.
Я нашел достаточно близкий вопрос здесь
Я изменил его для работы с одним нужным мне атрибутом, и он работает, как ожидалось, с примером XML в оригинальный вопрос.
Т.е. я могу получить:
<sect id="5" heading="1">
</sect>
, которое нужно изменить на:
<sect heading="1">
<id>5</id>
</sect>
Используя пример здесь
Но my XML немного сложнее, и на данный момент обнаружено 2 проблемы для его обработки (обе представлены в ссылке выше):
- Я хочу, чтобы новый элемент был размещен первым после исходного элемента , но если свободный текст появится после исходного элемента, результат будет другим, т.е. новый элемент будет после текста.
- Что-то пошло не так при обработке изменяемого мной элемента, например, следующее:
<TableCell>User input and actions: for example, type <bold>exit</bold>, click <bold>OK</bold>, press <bold>Alt+C</bold></TableCell>
будет изменено на
<TableCell>User input and actions: for example, type , click , press <bold>exit</bold><bold>OK</bold><bold>Alt+C</bold></TableCell>
, но останется нетронутым, если та же строка будет размещена за пределами элемента с атрибутом I. дорабатываю. При внимательном рассмотрении второй проблемы кажется, что это та же или аналогичная проблема, что и первая, т.е. свободный текст помещается перед элементами, и исходный порядок не сохраняется.
Поскольку я не понимаю порядок обработки в XSLT, я не знаю, как это исправить. Мы будем очень признательны за любую помощь с этим или полностью альтернативным предложением.
С уважением, Илья.