Java XSLT未按预期工作

Java XSLT未按预期工作,java,xslt,namespaces,Java,Xslt,Namespaces,我正在尝试用Java运行XSL转换,以更改某些XML文件上的名称空间URI。经过一些研究,我得出了以下XSL: 我试过了,一切都如我所料,因此当我提供以下非常简单的XML文件时: 标题0 …它返回以下内容: 标题0 然而,当我尝试用Java运行相同的翻译时,我得到了: java.lang.RuntimeException: Namespace for prefix 't' has not been declared. at com.sun.org.apache.xalan.inter

我正在尝试用Java运行XSL转换,以更改某些XML文件上的名称空间URI。经过一些研究,我得出了以下XSL:


我试过了,一切都如我所料,因此当我提供以下非常简单的XML文件时:


标题0
…它返回以下内容:


标题0
然而,当我尝试用Java运行相同的翻译时,我得到了:

java.lang.RuntimeException: Namespace for prefix 't' has not been declared.
at com.sun.org.apache.xalan.internal.xsltc.runtime.BasisLibrary.runTimeError(BasisLibrary.java:1603)
at com.sun.org.apache.xalan.internal.xsltc.runtime.BasisLibrary.runTimeError(BasisLibrary.java:1607)
at com.sun.org.apache.xalan.internal.xsltc.runtime.BasisLibrary.startXslElement(BasisLibrary.java:1490)
at GregorSamsa.template$dot$2()
at GregorSamsa.applyTemplates()
at GregorSamsa.applyTemplates()
at GregorSamsa.transform()
at com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet.transform(AbstractTranslet.java:617)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:748)
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:359)
问题出在Java还是我的XSL中?如果我从XSL文件中删除更改名称空间的代码并添加一些非面向名称空间的更改,Java运行良好,因此我认为运行转换的方式没有任何问题

我在各种帖子中都提到Java中的嵌入式翻译程序很差劲。这是一个例子吗

问题出在Java还是我的XSL中

您的XSLT样式表在Saxon 6.5、Saxon 9.5和Xalan 2.7中都可以使用。确实要将此样式表应用于此输入吗

如果我从XSL文件中删除更改名称空间的代码并添加一些非面向名称空间的更改,Java运行良好,因此我认为运行转换的方式没有任何问题


我肯定它有毛病。这并不一定意味着您的Java代码是错误的,但实现可能会在某个地方出错,运行时异常可能是由实际的错误引起的。

我将Saxon HE v9添加到我的项目中,所有工作都如预期的那样。因此,似乎是Java中嵌入的转换器导致了这个问题。感谢@MathiasMuller提供的指针,尽管我仍然不明白为什么没有Saxon它就不能工作。@PeteBrew如果您想知道,您必须在问题中包含Java代码。这不是我的专长,但我相信有人会告诉你出了什么问题。Saxon是最可靠的XSLT处理器,并且始终是我的首选。