如何将翻译后的XML保存到磁盘上的实际文件中? 我是 XML/XSLT 的新手,我正在尝试弄清楚这一点。 我似乎找不到任何适合我的例子。 例如,我只想将文件保存到 c:\temp\text.xls。 如何保存? 我必须使用java或.net或其他编程语言/api吗? 我希望让 XSL 保存文件。
XSL 本身不能执行任何操作。 它只是将 XML 文件转换为其他内容的定义。 要用它做任何事情,你需要在程序中运行XSL转换,或者使用XML间谍等工具。
更新
这是我几年前在 VBScript 中写的一个简单的例子:
Dim xml, xsl, htm, fso, flOut
Set xml = CreateObject("MSXML2.DOMDocument")
Set xsl = CreateObject("Msxml2.DOMDocument")
Set fso = CreateObject("Scripting.FileSystemObject")
xml.load WScript.Arguments(0)
xsl.load WScript.Arguments(1)
htm = xml.transformNode(xsl)
Set flOut = fso.CreateTextFile(WScript.Arguments(2))
flOut.Write htm
flOut.close
我称之为xmlTrfm.vbs。 像这样使用它:
xmlTrfm.vbs [sourceFileName].xml [transformFileName].xsl [outputFileName].[ext]
输出文件名的文件扩展名显然取决于 XSL 转换生成的格式,通常是 xml、html 或 txt,但几乎可以是任何格式。
几乎每个 XSLT 处理器都允许从命令行启动转换。其中一个参数是保存转换结果的文件。
例如:
-
撒克逊 9.x:
java net.sf.saxon.Transform -s:source -xsl:stylesheet -o:output
-
MSXML6:
msxsl.exe %xml% %xsl% -o %out% -u '6.0' -t %param[ name="value"]%
-
XQSharp:
xslt.exe -s %xml% -o %out% -r 1 -t %xsl% %param[ name="value"]%
-
.NET 2.0+ (XslCompiledTransform):
nxslt2.exe %xml% %xsl% -t -o %out%%param[ name="value"]%
-
AltovaXML (XML-SPY):
AltovaXML.exe -xslt2 %xsl% -in %xml% -out %out%%param[ name="value"]%
在上面的 2. 到 5. 中,%xml%
是包含 XML 文档的文件的路径,%xsl%
是包含主 XSLT 样式表的文件的路径,'%out% 是应保存转换结果的文件的路径。
是的,您无法从 XSLT 中保存它 - 您可以使用哪些语言?
也许(我推测)您的困难在于您在浏览器中运行 XSLT 转换?在这种情况下,您将遇到困难,因为出于安全原因,浏览器不允许以正常方式写入文件存储。
如果不是这种情况,请解释您如何运行 XSLT 转换。