使用xslt将文本转换为xml而不提供输入文件名

时间:2019-01-29 02:44:42

标签: xml xslt-2.0

我希望文本文件使用xslt转换为xml文件而不给出输入文件名。我在下面的代码上工作,但它使用文件名。没有给出文件名如何将某些文本转换为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 :(得分:0)

不清楚您使用哪个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特定的方法来设置转换以使用该模板。

我不明白您希望在不提供文件名的情况下如何处理文本输入文件。