У меня есть XML-файл, который содержит разделы, начинающиеся с имени файла:
<madcapfile filename="C:\1\Outputpath\The 7% solution.xlf">
Каждый раздел должен быть сохранен в отдельный файл.
Это мой XSLT:
<xsl:template match="madcapfile">
<xsl:variable name="file1" select="concat('file:///',@filename)"/>
<xsl:variable name="file2" select="encode-for-uri($file1)"/>
<xsl:variable name="file3" select="concat('file:///',replace(@filename,'%','%25'))"/>
<xsl:result-document method="xml" href="{$file2}">
<xsl:apply-templates select="node()"/>
</xsl:result-document>
</xsl:template>
Переменные file1, file2, file3 пока мои попытки.
Переменная file1 создает файлы в правильных местах для всех файлов, кроме тех, у которых в имени файла указан%.
Переменная file3 создает файлы в правильных местах для всех файлов, так что это рабочее решение.
Использование переменной file2 приводит к ошибке: процессор XSLT (Saxon 9.7) пытается записать файлы в
C:\Path-to-XSLT\C:\1\Outputpath\The 7% solution.xlf
т.е. похоже, что encode-for-uri обрабатывает входные данные как относительный путь, даже если он начинается с "C: \"
Я также попытался добавить «file: ///» в начало пути, что не меняет поведение encode-for-uri.
Есть ли способ заставить encode-for-uri обрабатывать свой ввод как абсолютный путь?