Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » WebService/XML/JSON/SOAP/SOA  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 [dom4j求助]关于xslt转换
jfml





发贴: 708
积分: 30
于 2003-08-12 09:43 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
感觉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)



作者 Re:[dom4j求助]关于xslt转换 [Re:CrazyJavar]
jfml





发贴: 708
积分: 30
于 2003-08-12 09:45 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
而我把//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="/">
    <xsl:value-of select="//title"/>
    <xsl:value-of select="//author"/>
  </xsl:template>
</xsl:stylesheet>
也就是去掉了那些HTML标签

转换没有报错,算是成功了,但是查看//target.xml时发现,target.xml只有一个header,没有任何内容了,真是奇怪
//target.xml
<?xml version="1.0" encoding="UTF-8"?>




flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923