我希望文本文件使用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>
答案 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特定的方法来设置转换以使用该模板。
我不明白您希望在不提供文件名的情况下如何处理文本输入文件。