С небольшими изменениями ваш XSLT-файл будет работать хорошо.Я добавил переменную для обозначения имени файла входных данных программы, а также выходных данных программы.Таким образом, XSLT может выглядеть так:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:variable name="curFile" select="'first.cmore.dk_2018-10-10.xml'" />
<xsl:variable name="outFile" select="'cmore.out.xml'" />
<xsl:template match="text()" />
<xsl:template match="/">
<xsl:result-document href="{$outFile}" method="xml">
<tv>
<xsl:for-each select="document($curFile)/tv/programme">
<programme>
<title>
<xsl:value-of select="title" />
</title>
<xsl:for-each select="category">
<category>
<xsl:value-of select="text()"/>
</category>
</xsl:for-each>
</programme>
</xsl:for-each>
</tv>
</xsl:result-document>
</xsl:template>
</xsl:stylesheet>
Выходной файл обозначен переменной outFile
.Если вы хотите изменить это на входной параметр, измените эту строку на <xsl:param name="outFile" />
и передайте параметр в качестве входного параметра в таблицу стилей.
Чтобы это работало, вы должны удалить строку определения DTD изXML
файл (я его не нашел) или добавьте DTD-файл в рабочий каталог (если вы знаете, где его можно получить).
Однако таким образом вы, вероятно, сможете преобразовать все XMLфайлы по указанной ссылке.
Если вы хотите динамически указывать имя файла XML, измените xsl:variable
на xsl:param
и передайте соответствующий параметр процессору XSLT.