JAXP 是否支持 XSLT 2.0
Does JAXP support XSLT 2.0
- 我的 ${java.home} 是 C:\Program Files\Java\jdk1.7.0_51.
- 我在 C:\Program 中提取了 saxonHE9-6-0-6J.zip
Files\Java\jdk1.7.0_51\jre\lib\ext
- 并将 saxonhe9.jar 添加到我的类路径变量中。
然后我在C:\Program下创建了一个jaxp.properties文件
Files\Java\jdk1.7.0_51\jre\lib 并添加以下行:
javax.xml.transform.TransformerFactory = net.sf.saxon.TransformerFactoryImpl
javax.xml.xpath.XPathFactory","net.sf.saxon.xpath.XPathFactoryImpl
为了测试,我在样式表中使用了以下几行
<xsl:for-each select="//*[@type='Usage']/@name">
<xsl:value-of select="." separator="', '"/>
</xsl:for-each>
但是
的输出
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
是一个没有逗号的字符串。
JAXP 是一个接口,而不是一个实现;它包括模式处理和 XPath 处理以及 XSLT 处理。
JAXP 转换接口有多种实现,包括 JDK 中的内置 XSLT 处理器、来自 Apache 的 Xalan-J 产品中的两个 Xalan 版本、Oracle XSLT 处理器, 和撒克逊人。其中唯一支持 XSLT 2.0 的是 Saxon。
我想你只是想要 <xsl:value-of select="//*[@type='Usage']/@name" separator=", "/>
而不是
<xsl:for-each select="//*[@type='Usage']/@name">
<xsl:value-of select="." separator="', '"/>
</xsl:for-each>
因为后者显然永远不会输出分隔符,因为您在 for-each
内部有 value-of
确保 .
是 [=13= 的单个项目].
http://xsltransform.net/6qVRKx4 处的在线样本输出 name 1, name 3
输入样本
<root>
<foo type="Usage" name="name 1"/>
<foo type="Nonsense" name="name 2"/>
<foo type="Usage" name="name 3"/>
</root>
- 我的 ${java.home} 是 C:\Program Files\Java\jdk1.7.0_51.
- 我在 C:\Program 中提取了 saxonHE9-6-0-6J.zip Files\Java\jdk1.7.0_51\jre\lib\ext
- 并将 saxonhe9.jar 添加到我的类路径变量中。
然后我在C:\Program下创建了一个jaxp.properties文件 Files\Java\jdk1.7.0_51\jre\lib 并添加以下行:
javax.xml.transform.TransformerFactory = net.sf.saxon.TransformerFactoryImpl javax.xml.xpath.XPathFactory","net.sf.saxon.xpath.XPathFactoryImpl
为了测试,我在样式表中使用了以下几行
<xsl:for-each select="//*[@type='Usage']/@name">
<xsl:value-of select="." separator="', '"/>
</xsl:for-each>
但是
的输出StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);
是一个没有逗号的字符串。
JAXP 是一个接口,而不是一个实现;它包括模式处理和 XPath 处理以及 XSLT 处理。
JAXP 转换接口有多种实现,包括 JDK 中的内置 XSLT 处理器、来自 Apache 的 Xalan-J 产品中的两个 Xalan 版本、Oracle XSLT 处理器, 和撒克逊人。其中唯一支持 XSLT 2.0 的是 Saxon。
我想你只是想要 <xsl:value-of select="//*[@type='Usage']/@name" separator=", "/>
而不是
<xsl:for-each select="//*[@type='Usage']/@name">
<xsl:value-of select="." separator="', '"/>
</xsl:for-each>
因为后者显然永远不会输出分隔符,因为您在 for-each
内部有 value-of
确保 .
是 [=13= 的单个项目].
http://xsltransform.net/6qVRKx4 处的在线样本输出 name 1, name 3
输入样本
<root>
<foo type="Usage" name="name 1"/>
<foo type="Nonsense" name="name 2"/>
<foo type="Usage" name="name 3"/>
</root>