我遇到了XSLT
,XSLT
的一个关键组成部分是XSL
。据我了解,XSLT
用于转换,例如,XML
到HTML
文档。对于转换,它使用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
的一部分吗?
有人可以帮我澄清一下吗?
答案 0 :(得分:2)
试着回答你的问题:
(a)不,XSL不是XSLT的组件。有时它被用作XSLT的同义词,有时它用于表示XSL-FO,有时在较旧的Microsoft文档中它用于指代早于XSLT的Microsoft语言。但在这些意义上,XSL都不是XSLT的一个组成部分。
(b)谁实施XSLT?这取决于你是使用现在时还是过去时。
与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
以及XPath
和XSL
构成了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版本。