我有以下格式的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
并按照浏览器的方式执行转换。
答案 0 :(得分:0)
在JAXP API中,TransformerFactory.getAssociatedStylesheet()
将源文档作为输入,并为Source
处理指令中引用的样式表返回xml-stylesheet
对象。然后,您可以使用factory.newTemplates()
或factory.newTransformer()
。
Saxon的s9api界面有一个类似的方法XsltCompiler.getAssociatedStylesheet()
。