cocoon-docs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject [Cocoon Wiki] New: FlowBasedXMLEditor
Date Thu, 16 Sep 2004 03:46:37 GMT
   Date: 2004-09-15T20:46:37
   Editor: TonyEdwards <>
   Wiki: Cocoon Wiki
   Page: FlowBasedXMLEditor

   no comment

New Page:

==  Page title (cookbook approach, tutorial , ...) ==
- TARGET-AUDIENCE: '''*beginner*''' advanced expert[[BR]]
- COCOON-RELEASES: 2.1.4, 2.1.5[[BR]]
- DOCUMENT-STATUS: '''*draft*''' reviewed released[[BR]]

=== What you will get from this page ===
This page will hopefully give you an insight into generating and processing XML documents
from within Flow.
=== Your basic skills ===
Comfortable with Flowscript
=== Technical prerequisites ===

=== Links to other information sources ===

===  page metadata ===
- AUTHOR: Tony Edwards[[BR]]
- AUTHOR-CONTACT: anthonybedwards AT optusnet DOT com DOT au[[BR]]
My first cocoon application was a simple xml editor written under version 2.0.4.
[[BR]]It utilised actions extensively and became a bit of a maintenance nightmare. It basically
allowed the user to create, edit and render into different formats an xml document derived
from a proprietory namespace. One of my greatest reservations about this method was the heavy
emphasis on Java as I'm not much of a java programmer at all.
[[BR]]When 2.1.4 came along I though I'd port the application and jazz it up at the same time.
I managed to scrape up enough examples and snippets to come up with a fairly usable solution.
[[BR]]Using flow to manipulate xml proved to be pretty straight forward, although I'm not
too sure as to the efficiency and optimisability of its application. [[BR]]So far so good
[[BR]] First step was to create a new flowscript file and include the necessary XML manipulation
classes. I'm generally flying blind when it comes to importing all these classes so there
may be some redundancy. 
[[BR]]// Create a new document, given the name of its root element
[[BR]]function newDocument(root, attributeName, attributeVal) {
[[BR]]	var result = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
[[BR]]    // Create a processing instruction targeted for xml.
[[BR]]    var node = result.createProcessingInstruction("xml", "version='1.0'");
[[BR]]    result.appendChild(node);
[[BR]]    node = null;
[[BR]]    // Create a comment for the document.
[[BR]]    node = result.createComment(
[[BR]]        "sample xml file created using XML DOM object.");
[[BR]]    result.appendChild(node);
[[BR]]    node=null;	
[[BR]]	result.appendChild(result.createElement(root));
[[BR]]	print("Add attributes to root..." + attributeName);
[[BR]]    if (attributeVal != null){
[[BR]]    	try	{
[[BR]]			print("creating attribute for root: " + attributeName);    	
[[BR]]			var root = result.getFirstChild();
[[BR]]			root.setAttribute(attributeName, attributeVal);    			
[[BR]]        } catch (error) {
[[BR]]            cocoon.log.error("Could not add attribute node to root: " + error);
[[BR]]        }
[[BR]]    }
[[BR]]	return result;

View raw message