我正在使用saxon for xml to html transform with xslt我需要有两个输出文件,一个是基本的html,一个是javascript文件,如果不支持js,它可以是文本文件。 这是我的转换的c#代码和xsl文档的一部分。我需要输出一个来自转换后的xml的html文件和一个带有一些脚本的javascript文件
public void ConvertXMLtoHTMLXSLT2Saxon()
{
System.IO.DirectoryInfo myDirectory = new DirectoryInfo(Environment.CurrentDirectory);
string parentDirectory = myDirectory.Parent.Parent.FullName;
string xsltFile = Path.Combine(parentDirectory, "test.xslt");
string xmlFile = Path.Combine(myDirectory.FullName, "test.xml");
// Create a Processor instance.
Processor processor = new Processor();
// Load the source document.
XdmNode input = processor.NewDocumentBuilder().Build(new Uri(xmlFile));
// Create a transformer for the stylesheet.
XsltTransformer transformer = processor.NewXsltCompiler().Compile(new Uri(xsltFile)).Load();
// Set the root node of the source document to be the initial context node.
transformer.InitialContextNode = input;
// BaseOutputUri is only necessary for xsl:result-document.
transformer.BaseOutputUri = new Uri(xsltFile);
// Create a serializer.
Serializer serializer = new Serializer();
serializer.SetOutputFile("test.html");
// Transform the source XML to System.out.
transformer.Run(serializer);
}
这里是xsl文档的一部分
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:text disable-output-escaping='yes'><!DOCTYPE html></xsl:text>
<HTML>
<HEAD>
<TITLE></TITLE>
<script src="Scripts/test.js"></script>
</HEAD>
<BODY>
<xsl:apply-templates/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="Page">
<xsl:apply-templates/>
<xsl:result-document href="{@Name}.js">
$(document).ready(function (){
--some javascript code--
})
</xsl:result-document>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:0)
如果您希望辅助输出文档是纯文本文件,请使用例如
<xsl:result-document href="{@Name}.js" method="text">
$(document).ready(function (){
--some javascript code--
})
</xsl:result-document>
XSLT没有针对Javascript文件的特殊序列化,因此method="text"
是适当的方法。