Да, вы можете выполнить то, что вы хотите в 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>