当前位置: 首页 > 知识库问答 >
问题:

XSLT 2多文件输出

宰父衡
2023-03-14

我使用的是saxon for xml到html的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'>&lt;!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>

共有1个答案

郑胡媚
2023-03-14

如果您希望二次输出文档是纯文本文件,则使用。

<xsl:result-document href="{@Name}.js" method="text">
$(document).ready(function (){
--some javascript code--
})
  </xsl:result-document>

XSLT对Javascript文件没有特殊的序列化,所以method="text"是合适的方法。

 类似资料:
  • 如何从输出到多个文件? 每个条目中的关键字是文件名。groupByKey转换给了我,但是我如何将它们写入多个文件呢? 例如,给定以下输入 我想输出两个文件

  • 所以我正在和Yii2一起工作,对它来说是相当新的。我正在使用Kartik文件上传,并试图将代码转换为多个文件。但它只保存了第一个文件。 我已经删除了验证,因为这也是失败的,但一旦我知道所有其他的都在工作,我会重新添加。 型号: 控制器: 查看:

  • 问题内容: 我正在尝试获取一个示例,该示例使用XSLT 2.0来输出工作中的多个文件。 在Java 1.6上使用Saxon B 9.7.0.1,出现此错误: input.xml transform.xml 问题答案: URI中的字符20是“文档和设置”中的第一个空格。作为快速解决方案,请尝试将文件移动到没有空格的路径。(例如,“ C:\ test”或类似的代码。)我怀疑长期的解决方法是将XSLT更

  • 目录表 文件 使用文件 储存器 储存与取储存 概括 在很多时候,你会想要让你的程序与用户(可能是你自己)交互。你会从用户那里得到输入,然后打印一些结果。我们可以分别使用raw_input和print语句来完成这些功能。对于输出,你也可以使用多种多样的str(字符串)类。例如,你能够使用rjust方法来得到一个按一定宽度右对齐的字符串。利用help(str)获得更多详情。 另一个常用的输入/输出类型

  • 在单个 Step 中处理多个输入文件是很常见的需求。如果这些文件都有相同的格式, 则可以使用 MultiResourceItemReader 来进行处理(支持 XML/或 纯文本文件)。 假如某个目录下有如下3个文件: file-1.txt file-2.txt ignored.txt file-1.txt 和 file-2.txt 具有相同的格式, 根据业务需求需要一起处理. 可以通过 Muli

  • File 结构体表示一个被打开的文件(它装包了一个文件描述符),并赋予了针对底层文件的读和/或写能力。(原文:The File struct represents a file that has been opened (it wraps a file descriptor), and gives read and/or write access to the underlying file.)