Hi - Apologies for the delay in replying. I believe this issue is still outstanding, I'm afraid.
Brian On Wed, April 23, 2008 13:42, Lukacs, Gabriel wrote: > Hello, > I have found in the mailing archive a discussion regarding to the > outputter attribute of the xmltask, that when its value is "simple" (or > e.g. "simple:4") than the xmltask does not work properly for XMLs > defined accroding to XSD schemas. But I could not find the solution for > it (I mean in the archive). Could somebody confirm if this probelm is > already solved or not? I have used the latest xmltask jar, but it does > not look solved. Please look at examples: > > ant1.6.5, xmltask-v1.15.1.jar, jdk 1.6.0 > > ##### Example1 (Simply reads the source XML and writes it out to the > same file): > > Source XML (src): > ========== > <?xml version="1.0" encoding="UTF-8"?> > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> > </beans> > > Task to modify the source XML (with same source and destionation > location): > ======================================================== > <xmltask source="${src}" dest="${src}" outputter="simple:4" > > </xmltask> > > Logs snippet from the modify process: > ============================ > [xmltask] Reading D:\Temp\applicationContext.xml > [xmltask] Executing xmltask 1.15.1 > [xmltask] Processing D:\Temp\applicationContext.xml into > D:\Temp\applicationContext.xml > [xmltask] Using predefined xml catalog (Question: Should be used > the xmlcatalog task also for XMLs defined according to XSD schemas?) > [xmltask] Normalizing resultant document > [xmltask] Indenting resultant document > > Result XML processed with xmltask (added some extra namespaces): > ================================================================ > <?xml version="1.0" encoding="UTF-8" standalone="no"?> > > <beans __NS1:xmlns="http://www.springframework.org/schema/beans" > xsi:schemaLocation="http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" > xmlns="http://www.springframework.org/schema/beans" > xmlns:__NS1="http://www.w3.org/2000/xmlns/" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"></beans> > > END of Example1 > ############################################################ > > ##### Example2 (It reads the beans from source XML (bean after bean) and > inserts them to the destination XML): > > Source XML (src): > ========== > <?xml version="1.0" encoding="UTF-8" standalone="no"?> > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> > > <bean class="appl.logging.Logger111AlarmHandler" > id="Logger111AlarmHandler" scope="singleton"> > <description>some description</description> > <property name="configurationRegistry" > ref="configurationRegistry"></property> > <property name="alarmManager" > ref="alarmManagerWrapper"></property> > </bean> > > <bean class="appl.logging.Logger999AlarmHandler" > id="Logger999AlarmHandler" init-method="init" scope="singleton"> > <property name="alarmHandler" > ref="Logger2AlarmHandler"></property> > </bean> > > </beans> > > > Destination XML before xmltaks processing (dest): > ================================ > <?xml version="1.0" encoding="UTF-8"?> > <beans xmlns="http://www.springframework.org/schema/beans" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-2.0.xsd"> > > </beans> > > Ant script to read beans from the source XML (bean after bean) and > insert them to dest XML: > ================================================================ > <?xml version="1.0" encoding="UTF-8"?> > <project name="merge_contexts" default="main" > > <taskdef name="xmltask" > classname="com.oopsconsultancy.xmltask.ant.XmlTask"/> > > <target name="main" depends="read_xml" > > <record name="log.txt" action="stop"/> > </target> > > <target name="read_xml" > > <record name="log.txt" action="start" loglevel="verbose"/> > <xmltask source="${src}"> > <call target="update_xml_context" > path="/:beans/:bean" > buffer="storedEntry" > > </call> > </xmltask> > </target> > > <target name="update_xml_context" > > <echo message="Print buffer:" /> > <xmltask> > <print buffer="storedEntry" /> > </xmltask> > <echo message="Insert bean:" /> > <xmltask source="${dest}" > dest="${dest}" > outputter="simple:4" > encoding="UTF-8" expandentityreferences="false"> > <insert path="/:beans" buffer="storedEntry" /> > </xmltask> > </target> > </project> > > Logs: > ====== > [xmltask] Reading D:\Temp\contrib\applicationContext.xml > [xmltask] Executing xmltask 1.15.1 > [xmltask] Processing D:\Temp\contrib\applicationContext.xml [no output > document] > [xmltask] Using predefined xml catalog > [xmltask] Applying CallAction(update_xml_context) to /:beans/:bean > [xmltask] Calling target update_xml_context for [bean: null] (in > buffer storedEntry > [xmltask] Storing [bean: null] against buffer (storedEntry) > [xmltask] > Project base dir set to: D:\Temp > [xmltask] calling target(s) [update_xml_context] in build file > D:\Temp\merge_contexts.xml > parsing buildfile D:\Temp\merge_contexts.xml with URI = > file:///D:/Temp/merge_contexts.xml > Project base dir set to: D:\Temp > Build sequence for target(s) `update_xml_context' is > [update_xml_context] > Complete build sequence is [update_xml_context, read_xml, main, ] > [xmltask] Entering D:\Temp\merge_contexts.xml... > Build sequence for target(s) `update_xml_context' is > [update_xml_context] > Complete build sequence is [update_xml_context, read_xml, main, ] > > update_xml_context: > [echo] Print buffer: > [xmltask] Executing xmltask 1.15.1 > [xmltask] Processing [no output document] > [xmltask] Applying [EMAIL PROTECTED] > [xmltask] { buffer 'storedEntry' output > [xmltask] <bean class="appl.logging.Logger111AlarmHandler" > id="Logger111AlarmHandler" scope="singleton" > xmlns="http://www.springframework.org/schema/beans"> > [xmltask] <description>some description</description> > [xmltask] <property name="configurationRegistry" > ref="configurationRegistry"/> > [xmltask] <property name="alarmManager" > ref="alarmManagerWrapper"/> > [xmltask] </bean> > [xmltask] } buffer 'storedEntry' output > [xmltask] Applied [EMAIL PROTECTED] > [echo] Insert bean: > [xmltask] Reading D:\Temp\applicationContext.xml > [xmltask] Executing xmltask 1.15.1 > [xmltask] Processing D:\Temp\applicationContext.xml into > D:\Temp\applicationContext.xml > [xmltask] Using predefined xml catalog > [xmltask] Applying InsertAction(buffer storedEntry, position [under]) > to /:beans > [xmltask] Inserting [bean: null] > [xmltask] Applied InsertAction(buffer storedEntry, position [under]) - > 1 match(es) > [xmltask] Normalizing resultant document > [xmltask] Indenting resultant document > [xmltask] Using output character encoding UTF-8 > update_xml_context: duration 0 seconds > [xmltask] Exiting D:\Temp\merge_contexts.xml. > [xmltask] Calling target update_xml_context for [bean: null] (in > buffer storedEntry > [xmltask] Storing [bean: null] against buffer (storedEntry) > [xmltask] (overwriting existing entry) > [xmltask] > Project base dir set to: D:\Temp > [xmltask] calling target(s) [update_xml_context] in build file > D:\Temp\merge_contexts.xml > parsing buildfile D:\Temp\merge_contexts.xml with URI = > file:///D:/Temp/merge_contexts.xml > Project base dir set to: D:\Temp > Build sequence for target(s) `update_xml_context' is > [update_xml_context] > Complete build sequence is [update_xml_context, read_xml, main, ] > [xmltask] Entering D:\Temp\merge_contexts.xml... > Build sequence for target(s) `update_xml_context' is > [update_xml_context] > Complete build sequence is [update_xml_context, read_xml, main, ] > > update_xml_context: > [echo] Print buffer: > [xmltask] Executing xmltask 1.15.1 > [xmltask] Processing [no output document] > [xmltask] Applying [EMAIL PROTECTED] > [xmltask] { buffer 'storedEntry' output > [xmltask] <bean class="appl.logging.Logger999AlarmHandler" > id="Logger999AlarmHandler" init-method="init" scope="singleton" > xmlns="http://www.springframework.org/schema/beans"> > [xmltask] <property name="alarmHandler" > ref="Logger2AlarmHandler"/> > [xmltask] </bean> > [xmltask] } buffer 'storedEntry' output > [xmltask] Applied [EMAIL PROTECTED] > [echo] Insert bean: > [xmltask] Reading D:\Temp\applicationContext.xml > [xmltask] Executing xmltask 1.15.1 > [xmltask] Processing D:\Temp\applicationContext.xml into > D:\Temp\applicationContext.xml > [xmltask] Using predefined xml catalog > [xmltask] [Fatal Error] :3:291: The prefix "xmlns" cannot be bound to > any namespace explicitly; neither can the namespace for "xmlns" be bound > to any prefix explicitly. > [xmltask] org.xml.sax.SAXParseException: The prefix "xmlns" cannot be > bound to any namespace explicitly; neither can the namespace for "xmlns" > be bound to any prefix explicitly. > [xmltask] at org.apache.xerces.parsers.DOMParser.parse(Unknown > Source) > [xmltask] at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown > Source) > [xmltask] at > com.oopsconsultancy.xmltask.ant.XmlTask.documentFromStream(XmlTask.java: > 356) > [xmltask] at > com.oopsconsultancy.xmltask.ant.XmlTask.documentFromFile(XmlTask.java:40 > 0) > [xmltask] at > com.oopsconsultancy.xmltask.ant.XmlTask.access$000(XmlTask.java:27) > [xmltask] at > com.oopsconsultancy.xmltask.ant.XmlTask$InputFile.getDocument(XmlTask.ja > va:216) > [xmltask] at > com.oopsconsultancy.xmltask.ant.XmlTask.execute(XmlTask.java:651) > [xmltask] at > org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) > [xmltask] at org.apache.tools.ant.Task.perform(Task.java:364) > [xmltask] at org.apache.tools.ant.Target.execute(Target.java:341) > [xmltask] at > org.apache.tools.ant.Target.performTasks(Target.java:369) > [xmltask] at > org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216) > [xmltask] at > org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleChe > ckExecutor.java:37) > [xmltask] at > org.apache.tools.ant.Project.executeTargets(Project.java:1068) > [xmltask] at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382) > [xmltask] at > com.oopsconsultancy.xmltask.CallAction.apply(CallAction.java:136) > [xmltask] at > com.oopsconsultancy.xmltask.XmlReplace.apply(XmlReplace.java:78) > [xmltask] at > com.oopsconsultancy.xmltask.XmlReplacement.apply(XmlReplacement.java:61) > [xmltask] at > com.oopsconsultancy.xmltask.ant.XmlTask.processDoc(XmlTask.java:705) > [xmltask] at > com.oopsconsultancy.xmltask.ant.XmlTask.execute(XmlTask.java:674) > [xmltask] at > org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) > [xmltask] at org.apache.tools.ant.Task.perform(Task.java:364) > [xmltask] at org.apache.tools.ant.Target.execute(Target.java:341) > [xmltask] at > org.apache.tools.ant.Target.performTasks(Target.java:369) > [xmltask] at > org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216) > [xmltask] at > org.apache.tools.ant.Project.executeTarget(Project.java:1185) > [xmltask] at > org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecut > or.java:40) > [xmltask] at > org.apache.tools.ant.Project.executeTargets(Project.java:1068) > [xmltask] at org.apache.tools.ant.Main.runBuild(Main.java:668) > [xmltask] at org.apache.tools.ant.Main.startAnt(Main.java:187) > [xmltask] at > org.apache.tools.ant.launch.Launcher.run(Launcher.java:246) > [xmltask] at > org.apache.tools.ant.launch.Launcher.main(Launcher.java:67) > update_xml_context: duration 0 seconds > [xmltask] Exiting D:\Temp\merge_contexts.xml. > read_xml: duration 0 seconds > > BUILD FAILED > > D:\Temp\merge_contexts.xml:14: The following error occurred while > executing this line: > D:\Temp\merge_contexts.xml:34: The prefix "xmlns" cannot be bound to any > namespace explicitly; neither can the namespace for "xmlns" be bound to > any prefix explicitly. > at > org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHe > lper.java:539) > at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:384) > at com.oopsconsultancy.xmltask.CallAction.apply(CallAction.java:136) > at com.oopsconsultancy.xmltask.XmlReplace.apply(XmlReplace.java:78) > at > com.oopsconsultancy.xmltask.XmlReplacement.apply(XmlReplacement.java:61) > at com.oopsconsultancy.xmltask.ant.XmlTask.processDoc(XmlTask.java:705) > at com.oopsconsultancy.xmltask.ant.XmlTask.execute(XmlTask.java:674) > at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) > at org.apache.tools.ant.Task.perform(Task.java:364) > at org.apache.tools.ant.Target.execute(Target.java:341) > at org.apache.tools.ant.Target.performTasks(Target.java:369) > at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216) > at org.apache.tools.ant.Project.executeTarget(Project.java:1185) > at > org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecut > or.java:40) > at org.apache.tools.ant.Project.executeTargets(Project.java:1068) > at org.apache.tools.ant.Main.runBuild(Main.java:668) > at org.apache.tools.ant.Main.startAnt(Main.java:187) > at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246) > at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67) > Caused by: D:\Temp\merge_contexts.xml:34: The prefix "xmlns" cannot be > bound to any namespace explicitly; neither can the namespace for "xmlns" > be bound to any prefix explicitly. > at com.oopsconsultancy.xmltask.ant.XmlTask.execute(XmlTask.java:659) > at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) > at org.apache.tools.ant.Task.perform(Task.java:364) > at org.apache.tools.ant.Target.execute(Target.java:341) > at org.apache.tools.ant.Target.performTasks(Target.java:369) > at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216) > at > org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleChe > ckExecutor.java:37) > at org.apache.tools.ant.Project.executeTargets(Project.java:1068) > at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382) > ... 17 more > --- Nested Exception --- > D:\Temp\merge_contexts.xml:34: The prefix "xmlns" cannot be bound to any > namespace explicitly; neither can the namespace for "xmlns" be bound to > any prefix explicitly. > at com.oopsconsultancy.xmltask.ant.XmlTask.execute(XmlTask.java:659) > at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) > at org.apache.tools.ant.Task.perform(Task.java:364) > at org.apache.tools.ant.Target.execute(Target.java:341) > at org.apache.tools.ant.Target.performTasks(Target.java:369) > at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216) > at > org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleChe > ckExecutor.java:37) > at org.apache.tools.ant.Project.executeTargets(Project.java:1068) > at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:382) > at com.oopsconsultancy.xmltask.CallAction.apply(CallAction.java:136) > at com.oopsconsultancy.xmltask.XmlReplace.apply(XmlReplace.java:78) > at > com.oopsconsultancy.xmltask.XmlReplacement.apply(XmlReplacement.java:61) > at com.oopsconsultancy.xmltask.ant.XmlTask.processDoc(XmlTask.java:705) > at com.oopsconsultancy.xmltask.ant.XmlTask.execute(XmlTask.java:674) > at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275) > at org.apache.tools.ant.Task.perform(Task.java:364) > at org.apache.tools.ant.Target.execute(Target.java:341) > at org.apache.tools.ant.Target.performTasks(Target.java:369) > at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216) > at org.apache.tools.ant.Project.executeTarget(Project.java:1185) > at > org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecut > or.java:40) > at org.apache.tools.ant.Project.executeTargets(Project.java:1068) > at org.apache.tools.ant.Main.runBuild(Main.java:668) > at org.apache.tools.ant.Main.startAnt(Main.java:187) > at org.apache.tools.ant.launch.Launcher.run(Launcher.java:246) > at org.apache.tools.ant.launch.Launcher.main(Launcher.java:67) > > Dest XML (after processing) > ====================== > <?xml version="1.0" encoding="UTF-8" standalone="no"?> > > <beans __NS1:xmlns="http://www.springframework.org/schema/beans" > xsi:schemaLocation="http://www.springframework.org/schema/beans > http://www.springframework.org/schema/beans/spring-beans-2.0.xsd" > xmlns="http://www.springframework.org/schema/beans" > xmlns:__NS1="http://www.w3.org/2000/xmlns/" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> > <bean class="appl.logging.Logger111AlarmHandler" > id="Logger111AlarmHandler" scope="singleton"> > <description>some description</description> > <property name="configurationRegistry" > ref="configurationRegistry"></property> > <property name="alarmManager" > ref="alarmManagerWrapper"></property> > </bean> > </beans> > > The result is similar as in example 1:The 2nd insert fails, since the > first insert "corrupts" the destination XML. Of course this works > without the outputter attribute in the xmltask or within it with value > "default", but in this case the xml is not formatted :-(. > > Thanks in advance. Regards, Gabo. > > > ------------------------------------------------------------------------- > This SF.net email is sponsored by the 2008 JavaOne(SM) Conference > Don't miss this year's exciting event. There's still time to save $100. > Use priority code J8TL2D2. > http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone_______________________________________________ > Xmltask-users mailing list > Xmltask-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/xmltask-users > -- Brian Agnew http://www.oopsconsultancy.com OOPS Consultancy Ltd Tel: +44 (0)7720 397526 Fax: +44 (0)20 8682 0012 ------------------------------------------------------------------------- This SF.net email is sponsored by the 2008 JavaOne(SM) Conference Don't miss this year's exciting event. There's still time to save $100. Use priority code J8TL2D2. http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone _______________________________________________ Xmltask-users mailing list Xmltask-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/xmltask-users