Удалить первую строку из текстового файла с помощью XSLT - PullRequest
2 голосов
/ 19 сентября 2009

Я работаю с системой (Maximo), которая генерирует текстовый файл.
Мне нужно удалить только первую строку файла.
Способ сделать это должен использовать XSLT.

Есть идеи?

Ответы [ 4 ]

4 голосов
/ 19 сентября 2009

Да, вы можете выполнить то, что вы хотите в XSLT!

Вероятно, было бы проще сделать это в XSLT 2.0, если это вариант для вас. Майкл Кей ответил на аналогичный вопрос в списке рассылки XSL в 2005 году.

Перефразируя его ответ, с небольшими примерами:

В XSLT 2.0, : вы можете использовать функцию unparsed-text () для чтения файла, tokenize () , чтобы разбить его на строки ( и просто проигнорируйте первую строку).

<xsl:for-each select="tokenize(unparsed-text($in), '\r?\n')">
 ...
</xsl:for-each>

В XSLT 1.0 : вы можете прочитать простой текстовый файл, притворившись, что это XML внешнюю сущность, и ссылку на нее из документа XML, который вызывает сущность, подлежащая расширению.

<!DOCTYPE foo [
<!ENTITY bar SYSTEM "bar.txt">
]>
<foo>
&bar;
</foo>
0 голосов
/ 19 сентября 2009

XSLT будет принимать в качестве входных данных только действительный XML-файл, а не обычный текстовый файл. Впрочем, он может выводить текст.

(я использую XSLT, например, для генерации кода на языке C).

0 голосов
/ 19 сентября 2009

Если ваш XSLT-процессор поддерживает любое преобразование (двоичные xforms через FFD - дескрипторы плоских файлов), есть возможность сделать это. Вы можете обернуть свой текст в узел, а затем работать с этим узлом, используя обычный шаблон XSLT, для вывода того, что находится после первого возврата каретки.

0 голосов
/ 19 сентября 2009

Способ сделать это - , а не с использованием XSLT.

XSLT может создавать текстовые файлы, но не может обрабатывать текстовые файлы. Он может обрабатывать только правильно сформированный XML.

...