我可以在没有明确提供 XSL 文件的情况下进行 XSL 转换吗?

发布于 2024-11-18 14:40:53 字数 561 浏览 3 评论 0原文

我正在使用 Transformer 执行从 XML 到 XHTML 的 XSL 转换:

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
// ...
Transformer transformer = TransformerFactory.newInstance()
  .newTransformer(/* xsl */);
transformer.transform(new StreamSource(xml), new StreamResult(xhtml));

在此代码中,我应该显式提供 XSL 文件。在我的情况下,我不知道应该使用哪个文件。相反,我希望转换器从原始 XML 中的 处理指令中获取此信息。可以用JDK6和Saxon来做吗?

I am using Transformer to perform XSL transformation from XML to XHTML:

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
// ...
Transformer transformer = TransformerFactory.newInstance()
  .newTransformer(/* xsl */);
transformer.transform(new StreamSource(xml), new StreamResult(xhtml));

In this code I should explicitly provide XSL file. In my situation I don't know which file should be used. Instead, I want the transformer to get this information from <?xsl-stylesheet?> processing instruction in the original XML. Is it possible to do with JDK6 and Saxon?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

∝单色的世界 2024-11-25 14:40:53

Xalan 可以做到这一点,请检查
可能是 Saxon 以及它是 javax.xml.transform.TransformerFactory 的方法:getAssociatedStylesheet

Xalan can do that, check this.
Probably Saxon as well as it is method of javax.xml.transform.TransformerFactory: getAssociatedStylesheet

违心° 2024-11-25 14:40:53

感谢 @JustYo 建议,我发现它在 Saxon 下运行良好。

System.setProperty("javax.xml.transform.TransformerFactory", 
    "net.sf.saxon.TransformerFactoryImpl");

StreamSource xmlSource = new StreamSource(xml);
TransformerFactory factory = TransformerFactory.newInstance();
Source xslSource = factory.getAssociatedStylesheet(xmlSource, null, null, null);
Transformer transformer = factory.newTransformer(xslSource);
transformer.transform(xmlSource, new StreamResult(xhtml));

Thanks to @JustYo suggestion I found it's working well under Saxon.

System.setProperty("javax.xml.transform.TransformerFactory", 
    "net.sf.saxon.TransformerFactoryImpl");

StreamSource xmlSource = new StreamSource(xml);
TransformerFactory factory = TransformerFactory.newInstance();
Source xslSource = factory.getAssociatedStylesheet(xmlSource, null, null, null);
Transformer transformer = factory.newTransformer(xslSource);
transformer.transform(xmlSource, new StreamResult(xhtml));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文