Le 4 janv. 06, à 14:46, Peter Flynn a écrit :
...Is there an example anywhere of a simple (1-variable) form which (a) writes its data to a new XML file and (b) inserts an element in an existing file?..
It's not 1-variable, but the XML binding sample (online at http://cocoon.zones.apache.org/demos/21branch/samples/blocks/forms/ form2xml.flow) shows how to edit an XML file.
The flowscript is at src/blocks/forms/samples/flow/binding_example.js, the form2xml() function is what drives the editing process, and defines the input and output XML filenames (Sources actually, they can be more than filenames).
The corresponding sitemap excerpt (from samples/sitemap.xmap) is:
<map:match pattern="form2xml.flow">
<map:call function="handleForm">
<map:parameter name="function" value="form2xml"/>
<map:parameter name="definitionURI"
value="forms/form2_model.xml"/>
<map:parameter name="documentURI"
value="forms/form2_data.xml"/>
<map:parameter name="bindingURI"
value="forms/form2_bind_xml.xml"/>
</map:call>
</map:match>
The form2simpleXML() variant does the same but without using bindings,
the XML is edited as is, here's the sitemap excerpt:
<map:match pattern="form2simpleXML.flow">
<map:call function="handleForm">
<map:parameter name="function" value="form2simpleXML"/>
<map:parameter name="definitionURI"
value="forms/form2_model.xml"/>
<map:parameter name="documentURI"
value="forms/form2_simple_data.xml"/>
</map:call>
</map:match>
If you need to insert XML at various places in the edited files, the
binding paths (in the binding definition file) should help, depending
on how complex the XML manipulation is. For more complex merging of
data, you can use processPipelineTo from flowscript, to process your
XML data before writing it to disk.
Hope this helps, -Bertrand
smime.p7s
Description: S/MIME cryptographic signature
