Java XSLT和XSL,谁实现了它们?
我遇到过Java XSLT和XSL,谁实现了它们?,java,xslt,Java,Xslt,我遇到过XSLT,而XSLT的一个关键组件是XSL。据我所知,XSLT用于转换,例如,XML到HTML文档。对于转换,它使用XSL 现在,我的问题是: Q1)谁实现了XSL?它是JDK的一部分吗 我看到的一些代码片段: TransformerFactory factory = TransformerFactory.newInstance(); StreamSource source = new StreamSource(new StringReader(inputXML)); Resource
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的一部分)中的it
问题2)这是否意味着Java支持开箱即用的XSL
?也就是说,我们不需要下载任何额外的jar来使用XSL
Q3)包是javax.xml.transform.*
JAXP的一部分吗
有人能帮我澄清一下吗?看,我认为它没有提到XSL
作为XSLT
的一个组件。在中,您可以看到,根据术语XSL
的定义,XSLT
与XSL-FO
和XPath
一起构成了W3CXSL
工作组规范的一部分。至于XSLT在Java中的实现,Xalan和Saxon被广泛使用,Xalan是Apache的XSLT1.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的候选建议。众所周知,IBMWebSphere也有自己的XSLT和XPath2.0的Java实现
因此,如果您想在不使用任何附加JAR的情况下使用Oracle JRE,那么您可以使用集成版Xalan的XSLT 1.0,如果您想使用XSLT 2.0,则需要使用Saxon(在Maven and的开源HE版本中提供),对于正在开发的XSLT 3.0语言的各种功能,您需要的是来自的商业PE或EE版本。请参见,我认为它没有在任何地方提到XSL
作为XSLT
的一个组件。在中,您可以看到,根据术语XSL
的定义,XSLT
与XSL-FO
和XPath
一起构成了W3CXSL
工作组规范的一部分。至于XSLT在Java中的实现,Xalan和Saxon被广泛使用,Xalan是Apache的XSLT1.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的候选建议。众所周知,IBMWebSphere也有自己的XSLT和XPath2.0的Java实现
因此,如果您想在不使用任何附加JAR的情况下使用Oracle JRE,那么您可以使用集成版Xalan的XSLT 1.0,如果您想使用XSLT 2.0,则需要使用Saxon(在Maven and的开源HE版本中提供),对于正在开发的XSLT 3.0语言的各种功能,您需要的是商业PE或EE版本。尝试回答您的问题: (a) 不,XSL不是XSLT的一个组件。有时它被用作XSLT的同义词,有时它被用来表示XSL-FO,有时在旧的Microsoft文档中,它被用来指代XSLT之前的Microsoft语言。但从这些意义上讲,XSL都不是XSLT的一个组件 (b) 谁实现了XSLT?这取决于你是用现在时态还是过去时态
- XSLT1.0有许多实现,一些来自IBM、Sun、Microsoft和Oracle等大公司,一些来自初创企业和独立爱好者(例如Daniel Veillard的libxslt,或者Uche Ogbuji的4XSLT,或者Petr Cimprich的Sablotron)。其中一些实现仍在使用中,但没有一个正在积极开发中李>
- XSLT2.0的实现要少得多,最著名的是我自己的Saxon产品、Altova的RaptorXML服务器、IBM的Websphere处理器、XmlPrime和MarkLogic处理器李>
- 有三家公司表示正在实施XSLT3.0:我自己的Saxonica、Exselt和Altova
JDK“开箱即用”的实现是一个名为Xalan的XSLT 1.0处理器,它实际上是两个原始处理器的混合体,IBM的LotusXSL(最初是Lotus)和Sun的XSLTC。尝试回答您的问题: (a) 不,XSL不是XSLT的一个组件。有时它被用作XSLT的同义词,有时它被用来表示XSL-FO,有时在旧的Microsoft文档中,它被用来指代XSLT之前的Microsoft语言。但从这些意义上讲,XSL都不是XSLT的一个组件 (b) 谁实现了XSLT?这取决于你是用现在时态还是过去时态
- XSLT1.0有许多实现,一些来自IBM、Sun、Microsoft和Oracle等大公司,一些来自初创企业和独立爱好者(例如Daniel Veillard的libxslt,或者Uche Ogbuji的4XSLT,或者Petr Cimprich的Sablotron)。其中一些实现仍在使用中,但没有一个正在积极开发中李>
- XSLT2.0的实现要少得多,最著名的是我自己的Saxon产品、Altova的RaptorXML服务器、IBM的Websphere处理器、XmlPrime和MarkLogic处理器李>
- 有三家公司表示正在实施XSLT3.0:我自己的Saxonica、Exselt和Altova