Tag: xalan

无法从Saxon XSLT处理器访问更新的Java对象

我正在使用Saxon XSLT处理器的开源版本“来自Saxonica的Saxon 9.0.0.2J”,并且我第一次尝试使用java可扩展性。 我遇到了一个问题,我怀疑这可能是对开源版本的限制,但是想先检查一下我是否会遗漏这些东西。 从下面的代码片段中,我的结果是$ c1的最终值不会因为调用greg而变化:setTime() – 即Saxon中的$ c1变量似乎是从底层Java对象取消的,并且没有明显的方法来访问setTime()调用更新的对象。 请注意,代码段中的所有代码都经过测试并正常工作 – 即$ c1通过getInstance()调用正确实例化,$ startdate具有正确的格式,并且$ d1已正确实例化。 思考? ….

XALAN寄存器扩展function,如SAXON

我想用XALAN通过XSLT转换XML。 现在我想使用扩展函数,这个函数必须像在SAXON中一样添加到JAVA源代码中: 方法: TransformerFactory tFactory = TransformerFactory.newInstance(); Configuration c = ((net.sf.saxon.TransformerFactoryImpl) tFactory).getConfiguration(); c.registerExtensionFunction(new FooExtension()); FooExtension: public class FooExtension extends ExtensionFunctionDefinition { private static final long serialVersionUID = -8143237239412146617L; @Override public SequenceType[] getArgumentTypes() { return new SequenceType[] { SequenceType.EMPTY_SEQUENCE }; } @Override public StructuredQName getFunctionQName() { return new StructuredQName(“ns”, “http://namespace”, “generate-guid”); } } 但是它如何在XALAN中工作(?FunctionTable?,?FunctionResolver?,?URIResolver?),我必须通过源代码完成,我不允许在XSLT中添加类。 谢谢!!

jboss 7.1 xalan问题?

我试图在JBoss7上创建一个基于Apache Jena的应用程序。 Apache Jena使用Xalan 2.11.0 JBoss 7和2.7.1 当我尝试调用应用程序时,我得到一个exception,其根目录是: org.apache.xerces.impl.dv.DVFactoryException:架构工厂类org.apache.xerces.impl.dv.xs.SchemaDVFactoryImpl不从SchemaDVFactory扩展 我怀疑这是因为版本的不同。 我阅读了模块文档( https://docs.jboss.org/author/display/MODULES/Introduction )并试图改变ot Xalan 2.11.0,但没有运气:Jboss在启动时就冻结了。 有没有人成功完成这项工作,或者,有没有人知道如何覆盖部署的Xalan? 谢谢

增量/流式XSLT转换?

我通常在JDK(JDK 7)中使用XSLT支持进行XSLT转换。 最近我遇到了一个相当大的XML文档,并且对此应用XSLT转换(甚至是非常基本的转换)会导致大量内存被使用。 我一直小心翼翼地完成所有的处理流程,但似乎JDK中的XSLT引擎(看起来是一个修改过的Xalan)总是首先在内存中构建一个DOM。 显然这不是我想要的。 现在我发现单独提供的Xalan(2007年的2.7.1!)确实有一个用于进行增量转换的API。 虽然这似乎有效,但我实际上希望我的代码在股票JDK上运行,而不是告诉用户摆弄任何背书文件夹。 在Java中进行增量XSLT转换的最佳方法是什么,以便我的代码与未修改/库存JDK安装兼容? 更新:这个最近更新的问题密切相关: 什么是最高效的基于Java的流式XSLT处理器?

java.lang.NoClassDefFoundError:org / apache / xpath / XPathAPI

我正在通过main在eclipse中执行一个类,因为我得到了这个错误 java.lang.NoClassDefFoundError: org/apache/xpath/XPathAPI 我正在使用jRE6。 请帮我解决这个问题

用Java转换StAX源代码

我有一些代码: XMLInputFactory xif = XMLInputFactory.newInstance() TransformerFactory tf = TransformerFactory.newInstance(“org.apache.xalan.processor.TransformerFactoryImpl”, null) Transformer t = tf.newTransformer() DOMResult result = new DOMResult() t.transform(new StAXSource(reader), result) 这会产生以下错误: 抓到:javax.xml.transform.TransformerException:无法转换类型为javax.xml.transform.stax.StAXSource的Source reader对象的类型为com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl

如何告诉xalan不要validation使用“document”函数检索的XML?

昨天甲骨文决定取消java.sun.com一段时间。 这为我搞砸了,因为xalan试图validation一些XML但无法检索properties.dtd。 我正在使用xalan 2.7.1来运行一些XSL转换,我不希望它validation任何东西。 所以尝试像这样加载XSL: SAXParserFactory spf = SAXParserFactory.newInstance(); spf.setNamespaceAware(true); spf.setValidating(false); XMLReader rdr = spf.newSAXParser().getXMLReader(); Source xsl = new SAXSource(rdr, new InputSource(xslFilePath)); Templates cachedXSLT = factory.newTemplates(xsl); Transformer transformer = cachedXSLT.newTransformer(); transformer.transform(xmlSource, result); 在XSL本身,我做这样的事情: 此代码检索的XML在顶部具有以下定义: <entry key="… 尽管上面的java代码指示解析器不是VALIDATE,但它仍然向java.sun.com发送请求。 虽然java.sun.com不可用,但这会使转换失败并显示以下消息: Can not load requested doc: http://java.sun.com/dtd/properties.dtd 如何让xalan停止尝试validation从“document”函数加载的XML?

将xml节点/文档/片段作为参数传递给xslt

我试图将w3c.dom.Document , Element和NodeList作为参数传递给xslt转换。 我希望能够在xslt中处理它: 我将参数传递为: Document params = createLinksParams(links); transformer.setParameter(“links”, params); 我得到这个例外: ‘从’com.sun.org.apache.xerces.internal.dom.DocumentImpl’到’node-set’的转换无效。’ 我也尝试了exslt:node-set() , xalan:nodeset()等,但它不起作用。 似乎内部xalan除了他自己的Node实现。 如何在不引发此问题的情况下做类似的事情? 我不能使用document($param)因为我在运行中构建了doc。

通过java在xslt转换中获取错误

我正在尝试一个xsl转换,现在由一个java对象生成一个中间XML,并且再次传递XML以生成一个新的XML,而在xsl转换中,我收到错误,让我告诉你在我的下面我试过的一段代码。 下面是我的类,首先我创建对象,然后通过xstream生成中间XML InvoiceReferenceNotificationMessage invoiceReferenceNotificationMessage = new InvoiceReferenceNotificationMessage(); invoiceReferenceNotificationMessage.setInvoiceReference(“SM/8315”); invoiceReferenceNotificationMessage.setABSReference(“IRMA5456R157311”); invoiceReferenceNotificationMessage.setCurrency(“GBP”); invoiceReferenceNotificationMessage.setInvoiceAmount(255646); invoiceReferenceNotificationMessage.setPaidAmount(1246565); invoiceReferenceNotificationMessage.setBalanceAmount(0); invoiceReferenceNotificationMessage.setValueDate(new Date()); invoiceReferenceNotificationMessage.setRemarks(“abc”); InvoiceReferenceNotificationMessage invoiceReferenceNotificationMessage1 = new InvoiceReferenceNotificationMessage(); invoiceReferenceNotificationMessage1.setInvoiceReference(“SM/1655”); invoiceReferenceNotificationMessage1.setABSReference(“I1575656311”); invoiceReferenceNotificationMessage1.setCurrency(“EUR”); invoiceReferenceNotificationMessage1.setInvoiceAmount(25655546); invoiceReferenceNotificationMessage1.setPaidAmount(1255565645); invoiceReferenceNotificationMessage1.setBalanceAmount(0); invoiceReferenceNotificationMessage1.setValueDate(new Date()); invoiceReferenceNotificationMessage1.setRemarks(“abERRc”); Transformer xsltTransformer = null; Mail m = new Mail(); m.setInvoiceReferenceNotificationMessage(invoiceReferenceNotificationMessage); XStream xstream = new XStream(); xstream.alias(“brokermail”,Mail.class); String abc = xstream.toXML(m); //System.out.println(abc); m.setInvoiceReferenceNotificationMessage(invoiceReferenceNotificationMessage1); xstream.alias(“brokermail”,Mail.class); String def […]

是dyn:评估已知在Xalan-J 2.7.1中存在问题的扩展函数吗?

我很难过为什么以下示例程序拒绝正确应用我的样式表。 看来dyn:evaluate在Xalan 2.7.1中的dyn:evaluate是拒绝处理某些XPath变量。 在类路径中使用xalan-j运行以下程序会产生以下结果: package com.testing2.xslt; import java.io.*; import java.util.logging.*; import javax.xml.transform.*; import javax.xml.transform.stream.*; public class DynEvaluateTransform { private static final String XSLT = “” + “\n” + “\n” + ” \n” + ” \n” + ” \n” + ” \n” + ” \n” + ” \n” + ” \n” + ” dyn:evaluate available\n” + […]