Удалить первую строку из текстового файла с помощью 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-процессор поддерживает любое преобразование (двоичные формы x через FFD - дескрипторы плоских файлов), есть возможность сделать это. Вы можете обернуть свой текст в узел и затем работать с этим узлом, используя обычный шаблон XSLT, чтобы вывести все, что будет после первого возврата каретки.