jfml
发贴: 708
积分: 30
|
于 2003-08-12 09:43
感觉dom4j的xslt支持好想有问题哦
//src.xml <?xml version="1.0" encoding="UTF-8"?> <source> <title>XSL</title> <author>John Smith</author> </source>
//engine.xsl <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <h1> <xsl:value-of select="//title"/> </h1> <h2> <xsl:value-of select="//author"/> </h2> </xsl:template> </xsl:stylesheet>
//work codes public static Document transformDocument(Document document, File styleSheet) throws TransformerException { TransformerFactory factory = TransformerFactory.newInstance(); Transformer transformer = factory.newTransformer(new StreamSource(styleSheet));
DocumentSource source = new DocumentSource(document); DocumentResult result = new DocumentResult(); transformer.transform(source, result);
Document transformedDoc = result.getDocument();
return transformedDoc; }
程序跑起来后报错如下: javax.xml.transform.TransformerException: org.dom4j.IllegalAddException: The node "org.dom4j.tree.DefaultElement@ad5fab [Element: <h1 attributes: []/>]" could not be added to the branch "null" because: Cannot add another element to this Document as it already has a root element of: h1 at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:725) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2339) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2160) at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1213) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:668) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1129) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1107) at org.jfml.util.XmlAPI.transformDocument(XmlAPI.java:348) at org.jfml.eclipseplugins.xslttool.XslTransformer.transform(XslTransformer.java:193) at org.jfml.eclipseplugins.xslttool.TransformDialog$4.widgetSelected(TransformDialog.java:418) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:89) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:81) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:840) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1838) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1545) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1402) at org.eclipse.ui.internal.Workbench.run(Workbench.java:1385) at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:845) at org.eclipse.core.boot.BootLoader.run(BootLoader.java:461) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.eclipse.core.launcher.Main.basicRun(Main.java:291) at org.eclipse.core.launcher.Main.run(Main.java:747) at org.eclipse.core.launcher.Main.main(Main.java:583) Caused by: org.dom4j.IllegalAddException: The node "org.dom4j.tree.DefaultElement@ad5fab [Element: <h1 attributes: []/>]" could not be added to the branch "null" because: Cannot add another element to this Document as it already has a root element of: h1 at org.apache.xalan.transformer.ResultTreeHandler.flushElem(ResultTreeHandler.java:870) at org.apache.xalan.transformer.ResultTreeHandler.flushPending(ResultTreeHandler.java:954) at org.apache.xalan.transformer.ResultTreeHandler.endElement(ResultTreeHandler.java:308) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:716) ... 25 more --------- org.dom4j.IllegalAddException: The node "org.dom4j.tree.DefaultElement@ad5fab [Element: <h1 attributes: []/>]" could not be added to the branch "null" because: Cannot add another element to this Document as it already has a root element of: h1 at org.apache.xalan.transformer.ResultTreeHandler.flushElem(ResultTreeHandler.java:870) at org.apache.xalan.transformer.ResultTreeHandler.flushPending(ResultTreeHandler.java:954) at org.apache.xalan.transformer.ResultTreeHandler.endElement(ResultTreeHandler.java:308) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:716) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2339) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2160) at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1213) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:668) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1129) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1107) at org.jfml.util.XmlAPI.transformDocument(XmlAPI.java:348) at org.jfml.eclipseplugins.xslttool.XslTransformer.transform(XslTransformer.java:193) at org.jfml.eclipseplugins.xslttool.TransformDialog$4.widgetSelected(TransformDialog.java:418) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:89) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:81) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:840) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1838) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1545) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1402) at org.eclipse.ui.internal.Workbench.run(Workbench.java:1385) at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:845) at org.eclipse.core.boot.BootLoader.run(BootLoader.java:461) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.eclipse.core.launcher.Main.basicRun(Main.java:291) at org.eclipse.core.launcher.Main.run(Main.java:747) at org.eclipse.core.launcher.Main.main(Main.java:583) --------- org.dom4j.IllegalAddException: The node "org.dom4j.tree.DefaultElement@ad5fab [Element: <h1 attributes: []/>]" could not be added to the branch "null" because: Cannot add another element to this Document as it already has a root element of: h1 at org.dom4j.tree.AbstractDocument.checkAddElementAllowed(AbstractDocument.java:209) at org.dom4j.tree.AbstractDocument.addElement(AbstractDocument.java:157) at org.dom4j.io.SAXContentHandler.startElement(SAXContentHandler.java:234) at org.apache.xalan.transformer.ResultTreeHandler.flushElem(ResultTreeHandler.java:860) at org.apache.xalan.transformer.ResultTreeHandler.flushPending(ResultTreeHandler.java:954) at org.apache.xalan.transformer.ResultTreeHandler.endElement(ResultTreeHandler.java:308) at org.apache.xalan.templates.ElemLiteralResult.execute(ElemLiteralResult.java:716) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2339) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2160) at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1213) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:668) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1129) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1107) at org.jfml.util.XmlAPI.transformDocument(XmlAPI.java:348) at org.jfml.eclipseplugins.xslttool.XslTransformer.transform(XslTransformer.java:193) at org.jfml.eclipseplugins.xslttool.TransformDialog$4.widgetSelected(TransformDialog.java:418) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:89) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:81) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:840) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:1838) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1545) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1402) at org.eclipse.ui.internal.Workbench.run(Workbench.java:1385) at org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:845) at org.eclipse.core.boot.BootLoader.run(BootLoader.java:461) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:324) at org.eclipse.core.launcher.Main.basicRun(Main.java:291) at org.eclipse.core.launcher.Main.run(Main.java:747) at org.eclipse.core.launcher.Main.main(Main.java:583)
|