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

Reply via email to