实现它们的XSLT和XSL?

时间:2016-08-31 08:49:34

标签: java xslt

我遇到了XSLTXSLT的一个关键组成部分是XSL。据我了解,XSLT用于转换,例如,XMLHTML文档。对于转换,它使用XSL

现在,我的问题是:

Q1)谁实施XSL?它是JDK的一部分吗?

我见过的一些代码片段:

TransformerFactory factory = TransformerFactory.newInstance();
StreamSource source = new StreamSource(new StringReader(inputXML));
Resource resource = new ClassPathResource("xslTransformationFile.xsl");
 ...
Transformer transformer = factory.newTransformer(xslStream);
transformer.transform(source,result);

其中大多数来自包裹:javax.xml.transform.*,而且来自rt.jar(jdk的一部分)。

Q2)是否表示Java支持XSL开箱即用?也就是说,我们不需要使用XSL下载任何额外的jar进行转换?

问题3)包javax.xml.transform.*JAXP的一部分吗?

有人可以帮我澄清一下吗?

2 个答案:

答案 0 :(得分:2)

试着回答你的问题:

(a)不,XSL不是XSLT的组件。有时它被用作XSLT的同义词,有时它用于表示XSL-FO,有时在较旧的Microsoft文档中它用于指代早于XSLT的Microsoft语言。但在这些意义上,XSL都不是XSLT的一个组成部分。

(b)谁实施XSLT?这取决于你是使用现在时还是过去时。

  • 有许多XSLT 1.0的实现,其中一些来自IBM,Sun,Microsoft和Oracle等大公司,一些来自初创公司和独立发烧友(例如来自Daniel Veillard的libxslt,或来自Uche Ogbuji的4XSLT,或来自Uche Ogbuji的Sablotron) Petr Cimprich)。其中一些实现仍在使用中,但没有一个正在积极开发中。
  • XSLT 2.0的实现要少得多,最着名的是我自己的Saxon产品,Altova的RaptorXML服务器,IBM的Websphere处理器,XmlPrime和MarkLogic处理器。
  • 有三家公司声称他们正在实施XSLT 3.0:我自己的Saxonica,Exselt和Altova。

与JDK“开箱即用”的实现是一个名为Xalan的XSLT 1.0处理器,它实际上是两个原始处理器的混合体,IBM的LotusXSL(最初为Lotus)和Sun的XSLTC。

答案 1 :(得分:1)

请参阅https://en.wikipedia.org/wiki/XSLT,我不认为XSL作为XSLT的一个组成部分提到XSL。在https://en.wikipedia.org/wiki/XSL中,您可以看到,根据术语XSLT的定义,XSL-FO以及XPathXSL构成了W3C规范的一部分{ {1}}工作组。至于Java中XSLT的实现,Xalan和Saxon被广泛使用,Xalan是Apache的XSLT 1.0处理器,它分别集成在Sun的Oracle JRE中。 Saxon存在Saxon 6.5作为XSLT 1.0处理器和Saxon 9作为XSLT 2.0处理器,不断进一步开发以实现XSLT,XPath和XQuery规范所取得的进展,因此它现在实现了XPath 3.0标准和候选推荐XSLT 3.0和XPath 3.1。 IBM Websphere也有自己的XSLT和XPath 2.0的Java实现。

因此,如果您想在不使用任何其他jar的情况下使用Oracle JRE,那么您可以使用Xalan的集成版本访问XSLT 1.0,如果您需要XSLT 2.0,则需要使用Saxon(可从Maven的开源HE版本获得)和http://saxon.sourceforge.net),对于正在开发的XSLT 3.0语言的各种功能,您需要http://www.saxonica.com/的商业PE或EE版本。