Удалить первую строку из текстового файла с помощью XSLT

StackOverflow https://stackoverflow.com/questions/1446819

  •  22-07-2019
  •  | 
  •  

Вопрос

Я работаю с системой (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, чтобы вывести все, что будет после первого возврата каретки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top