gpt4 book ai didi

java - XSLT 2.0 xsl :value-of separator attribute not working in Java 1. 7 与 apache.xalan

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:18:05 26 4
gpt4 key购买 nike

XSLT 2.0 xsl:value-of 元素的 separator 属性似乎无法与内置的 Java 1.7 XSLT 处理器一起使用。这是示例(从 XSLT 2nd ed. 的第 4 章略微编辑以减小大小):

XML文件

<?xml version="1.0" encoding="utf-8"?>
<cars>
<manufacturer name="Chevrolet">
</manufacturer>
<manufacturer name="Ford">
</manufacturer>
<manufacturer name="Volkswagen">
</manufacturer>
</cars>

XSLT 文件

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:value-of select="cars/manufacturer/@name" separator=", "/>
</xsl:template>
</xsl:stylesheet>

Java代码

import javax.xml.transform.*;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;

public class FooMain {
public static void main(String[] args) throws IOException, URISyntaxException, TransformerException {
TransformerFactory factory = TransformerFactory.newInstance();
System.out.println("transformer factory class: "+factory.getClass()); // line-a
Source xslt = new StreamSource(new File("transform.xslt"));
Transformer transformer = factory.newTransformer(xslt);
Source text = new StreamSource(new File("input.xml"));
transformer.transform(text, new StreamResult(new File("output.html")));
}
}

当代码运行时,它会产生以下输出文件:

Chevrolet

...与书中描述的相反:

Chevrolet, Ford, Volkswagen

我在 Ubuntu Precise 中使用 Java 1.7,TransformerFactory 实例的类名被报告(在上面 Java 代码的 line-a 中)为:

com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl

更新

我进行了实验,并将 XSLT 文件中的 separator 属性重命名为 separatorBOO 并且代码继续运行而没有提示,并产生完全相同的结果输出。所以 XSLT 2.0 separator 属性似乎根本无法识别 ??

最佳答案

您必须提供另一个工厂,因为 Xalan 不支持 xslt2 转换。尝试使用撒克逊语。我猜你只需要将 jar 放到你的类路径中,因为如果类路径中没有提供程序,Java 正在使用它的嵌入式版本。

关于java - XSLT 2.0 xsl :value-of separator attribute not working in Java 1. 7 与 apache.xalan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16737952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com