Java:我可以基于href属性执行XSLT转换吗?

时间:2016-03-29 21:31:42

标签: java xml xslt

我有以下格式的xml文件:

<?xml version='1.0' encoding="ISO-8859-1"?>
<?xml-stylesheet href="/path/to/transformer.xsl" type="text/xsl"?>
Content...

当我在浏览器中打开文件时,它会根据/path/to/transformer.xsl自动正确解析它。

我想编写一个Java程序,该程序获取xml文件的路径,并根据html中的href属性生成xml-stylesheet输出。在伪代码中:

private void transform(String inputPath, String outputPath) {
  // Open a xml file found in inputPath
  // Perform an XSLT transformation based on the href attribute
  // Write the result to a html file in outputPath
}

我知道这可能是通过使用正则表达式获取属性值来完成的,但我正在寻找一种更简洁的方法。我想考虑整个xml-stylesheet并按照浏览器的方式执行转换。

1 个答案:

答案 0 :(得分:0)

在JAXP API中,TransformerFactory.getAssociatedStylesheet()将源文档作为输入,并为Source处理指令中引用的样式表返回xml-stylesheet对象。然后,您可以使用factory.newTemplates()factory.newTransformer()

以常规方式编译此样式表

Saxon的s9api界面有一个类似的方法XsltCompiler.getAssociatedStylesheet()