Я работаю с системой (Maximo), которая генерирует текстовый файл.
Мне нужно удалить только первую строку файла.
Для этого нужно использовать XSLT.
Есть идеи?
Я работаю с системой (Maximo), которая генерирует текстовый файл.
Мне нужно удалить только первую строку файла.
Для этого нужно использовать XSLT.
Есть идеи?
Да, с помощью 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>
Способ сделать это — не использовать XSLT.
XSLT может создавать текстовые файлы, но не может обрабатывать текстовые файлы. Он может обрабатывать только правильно сформированный XML.
XSLT будет принимать в качестве входных данных только допустимый XML-файл, а не обычный текстовый файл. Однако он может выводить текст.
(Я использую XSLT, например, для генерации кода C.)
Если ваш XSLT-процессор поддерживает любое преобразование (бинарные xforms через FFD — дескрипторы плоских файлов), это можно сделать. Вы можете обернуть свой текст узлом, а затем работать с этим узлом, используя обычный шаблон XSLT, чтобы вывести все, что будет после первого возврата каретки.