Преобразование текста в xml с использованием xslt без указания имени входного файла - PullRequest
0 голосов
/ 29 января 2019

Я хочу, чтобы мой текстовый файл конвертировался в xml-файл с использованием xslt без указания имени входного файла. Я работал над приведенным ниже кодом, но он принимает имя файла. Без указания имени файла, как преобразовать некоторый текст в xml, как показано нижеOutput.xml.Может кто-нибудь помочь мне здесь.

Input.txt:

12/34/56/78/9/123/

Transform.xslt:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:fn="http://www.w3.org/2005/xpath-functions" exclude-result- 
 prefixes="xs fn">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:param name="pathToFile" select="'file:///c:/Input.txt'" />
<xsl:param name="filename" select="'file:///c:/Output.xml'"/>
<xsl:template match="/">
   <xsl:choose>
      <xsl:when test="unparsed-text-available($pathToFile)">

       <xsl:result-document href="{$filename}" method="xml">
         <xsl:variable name="csv" select="unparsed-text($pathToFile)" />
         <xsl:copy>       
           <File>
              <xsl:value-of select="$csv" />
           </File>
         </xsl:copy> 
      </xsl:result-document>
      </xsl:when>
      <xsl:otherwise>
         <xsl:text>Cannot locate : </xsl:text><xsl:value-of 
         select="$pathToFile" />
      </xsl:otherwise>
      </xsl:choose>
  </xsl:template>
</xsl:stylesheet>

Output.xml:

<?xml version="1.0" encoding="UTF-8"?>
 <File>1/23/456/7/8/14/9/</File>

1 Ответ

0 голосов
/ 29 января 2019

Не ясно, какой процессор XSLT вы используете, как вы его называете (командная строка, API, внутри IDE) и каким образом вы ожидаете, что компьютерная программа, такая как таблица стилей XSLT, обработает некоторый входной файл без предоставления вводаимя файла.

Как правило, в XSLT 2 и более поздних версиях вместо предоставления входного документа XML, обработка которого начинается с соответствующего ему шаблона, начать обработку с именованного шаблона.В XSLT 2 вам придется выбрать один (например, <xsl:template match="main">...</xsl:template>) или в XSLT 3 вы можете назвать его <xsl:template name="xsl:initial-template">...</xsl:template>.Затем вам придется использовать специфичные для процессора или IDE средства настройки преобразования для использования этого шаблона.

Я не понимаю, как вы собираетесь обрабатывать текстовый файл ввода без указания его имени.

...