<?xml version="1.0" encoding="UTF-8"?><rss xmlns:xrl="http://1060.org/xrl" version="2.0"><channel><title>Javascript E4X tutorial and examples</title><link>http://www.1060.org/forum/topic/63</link><description>
					Entries: 15 Views: 10796</description><generator>1060 NetKernel Standard Edition v2.x.x 1060 Forum v1.0.0</generator><language>en-us</language><ttl>60</ttl><item><title>Property Accessors works</title><link>http://www.1060.org/forum/topic/63</link><guid isPermaLink="true">http://www.1060.org/forum/topic/63</guid><description>&lt;div&gt;&lt;b&gt;pjr&lt;/b&gt;, thank you very much for the solution. More importantly &lt;b&gt;thanks&lt;/b&gt; for the E4X resource. I was googling with wrong keywords. I was able to get the E4X spec document, now. Thanks again.&lt;/div&gt;</description><pubDate>Thu, 02 Nov 2006 15:10:00 GMT</pubDate></item><item><title>Ignore QName() above</title><link>http://www.1060.org/forum/topic/63</link><guid isPermaLink="true">http://www.1060.org/forum/topic/63</guid><description>&lt;div&gt;I was playing around and that got left in the example!&lt;/div&gt;</description><pubDate>Wed, 01 Nov 2006 22:22:00 GMT</pubDate></item><item><title>Property Accessors</title><link>http://www.1060.org/forum/topic/63</link><guid isPermaLink="true">http://www.1060.org/forum/topic/63</guid><description>&lt;div&gt;The answer seems to be in section '11.2.1 Property Accessors' of the E4X spec.  This works...&lt;br/&gt;&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;&lt;br/&gt;importPackage(Packages.java.lang);&lt;br/&gt;&lt;br/&gt;doc = &amp;lt;doc&amp;gt;&lt;br/&gt;&amp;lt;node&amp;gt;&lt;br/&gt;&amp;lt;node.1&amp;gt; hello &amp;lt;/node.1&amp;gt;&lt;br/&gt;&amp;lt;node.1&amp;gt; world &amp;lt;/node.1&amp;gt;&lt;br/&gt;&amp;lt;node.1&amp;gt; welcome to &amp;lt;/node.1&amp;gt;&lt;br/&gt;&amp;lt;node.1&amp;gt; E4X &amp;lt;/node.1&amp;gt;&lt;br/&gt;&amp;lt;node.2&amp;gt; NOT SEEN &amp;lt;/node.2&amp;gt;&lt;br/&gt;&amp;lt;/node&amp;gt;&lt;br/&gt;&amp;lt;/doc&amp;gt;;&lt;br/&gt;&lt;br/&gt;qn=QName("node.1");&lt;br/&gt;&lt;br/&gt;for each ( text in doc..*["node.1"] )&lt;br/&gt;{&lt;br/&gt; System.out.println(text);&lt;br/&gt;}&lt;br/&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;Maybe there's an elegant escaping syntax but I haven't found it yet!&lt;br/&gt;&lt;br/&gt;Cheers&lt;br/&gt;&lt;br/&gt;Pete&lt;/div&gt;</description><pubDate>Wed, 01 Nov 2006 22:21:00 GMT</pubDate></item><item><title>How do I iterate over nodes that have period in their names?</title><link>http://www.1060.org/forum/topic/63</link><guid isPermaLink="true">http://www.1060.org/forum/topic/63</guid><description>&lt;div&gt;I have an xml document as follows&lt;br/&gt;&lt;b&gt;&amp;lt;doc&amp;gt;&lt;br/&gt;&amp;lt;node&amp;gt;&lt;br/&gt;&amp;lt;node.1&amp;gt; hello &amp;lt;/node.1&amp;gt;&lt;br/&gt;&amp;lt;node.1&amp;gt; world &amp;lt;/node.1&amp;gt;&lt;br/&gt;&amp;lt;node.1&amp;gt; welcome to &amp;lt;/node.1&amp;gt;&lt;br/&gt;&amp;lt;node.1&amp;gt; E4X &amp;lt;/node.1&amp;gt;&lt;br/&gt;&amp;lt;/node&amp;gt;&lt;br/&gt;&amp;lt;/doc&amp;gt;&lt;/b&gt;&lt;br/&gt;How do I iterate over &lt;b&gt;node.1&lt;/b&gt;?&lt;br/&gt;&lt;br/&gt;I would like to something like &lt;br/&gt;&lt;b&gt;for each ( text in doc..node.1 )&lt;br/&gt;{&lt;br/&gt;print (text);&lt;br/&gt;}&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;Right now, I can't do this because of period in the node name. Rhino interpreter is throwing an error. &lt;b&gt;'missing ) after for-loop control'&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;Can someone help me? Thanks.&lt;/div&gt;</description><pubDate>Wed, 01 Nov 2006 20:01:00 GMT</pubDate></item><item><title>a few checks...</title><link>http://www.1060.org/forum/topic/63</link><guid isPermaLink="true">http://www.1060.org/forum/topic/63</guid><description>&lt;div&gt;First things first, are you using NetKernel version 2.0.6 as E4X support is new feature? Secondly try running the E4X example in the Developer Tools -&amp;gt; Script Playpen - does that work?&lt;br/&gt;&lt;br/&gt;If you get this far then it is likely a configuration issue within your development module.&lt;br/&gt;&lt;br/&gt;What is you setup? (OS/JVM version/ How are you using E4X - in a custom module/ in workbench)&lt;br/&gt;&lt;br/&gt;Cheers,&lt;br/&gt;Tony&lt;/div&gt;</description><pubDate>Fri, 29 Jul 2005 13:47:00 GMT</pubDate></item><item><title>I have setup problems.</title><link>http://www.1060.org/forum/topic/63</link><guid isPermaLink="true">http://www.1060.org/forum/topic/63</guid><description>&lt;div&gt;The information you gave was very valuable. But i think i need more help. I have set up problems. Can you go over what is need to start with rhino. I cant write js including XML data type. The error is "XML" is not defined. What could be the problem...&lt;/div&gt;</description><pubDate>Thu, 28 Jul 2005 16:49:00 GMT</pubDate></item><item><title>Javascript E4X tutorial and examples</title><link>http://www.1060.org/forum/topic/63</link><guid isPermaLink="true">http://www.1060.org/forum/topic/63</guid><description>&lt;div&gt;I've been playing with E4X within the NetKernel scripting framework because I wanted to see if the tight language binding between Javascript and XML really made writing scripts to process XML easier and more compact. &lt;br/&gt;&lt;br/&gt;The conclusion: &lt;b&gt;E4X really works well despite a few rough edges.&lt;/b&gt;&lt;br/&gt;&lt;br/&gt;Getting into E4X, though, was hard because there are not many good sources of example code out there to use.&lt;br/&gt;&lt;br/&gt;The specification is not that helpful to actually work out how to use it:&lt;br/&gt;&lt;a href="http://www.ecma-international.org/publications/standards/Ecma-357.htm" target="_new"&gt;http://www.ecma-international.org/publications/standards/Ecma-357.htm&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;One page this page of E4X tests which was very helpful:&lt;br/&gt;&lt;a href="http://bclary.com/2004/10/03/js-tests/menubody.html" target="_new"&gt;http://bclary.com/2004/10/03/js-tests/menubody.html&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;Here is quick cookbook of some code snippets I've discovered:&lt;br/&gt;&lt;font size="5"&gt;&lt;b&gt;Cookbook&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;create a literal document:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;doc = &amp;lt;a&amp;gt;&amp;lt;b c="1"/&amp;gt;&amp;lt;b c="2"/&amp;gt;&amp;lt;/a&amp;gt;;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;create cursor into document&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;b0 = doc.b[0];&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;add/assign an attribute&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;doc.@c="new value";&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;delete a node:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;delete doc.@c;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;iterate over nodes:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;for each (b in doc.b) { x = b.@c; }&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;find all decendants:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;allc = doc..@c;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;insert a new fragment:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;frag = &amp;lt;b c="3"/&amp;gt;;&lt;br/&gt;doc.insertChildAfter(doc.b[1], frag);&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;insert a new fragment at beginning:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;frag = &amp;lt;b c="0"/&amp;gt;;&lt;br/&gt;doc.insertChildAfter(null, frag);&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;parameterized locate:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;cValue=2;&lt;br/&gt;bNode = doc.b.(@c==cValue);&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;parameterized text in literal:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;text="text here";&lt;br/&gt;frag = &amp;lt;b c="4"&amp;gt;{text}&amp;lt;/b&amp;gt;;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;parameterized attribute in literal:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;text="4";&lt;br/&gt;frag = &amp;lt;b/&amp;gt;;&lt;br/&gt;frag.@c=text;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;count matches:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;count = doc.b.length();&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;&lt;font size="5"&gt;&lt;b&gt;NetKernel specific&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;Source an external resource as an XML object:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;org=new XML( context.sourceAspect( "http://www.1060.org/", IAspectXmlObject).getXmlObject() );&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;Create a response from an XML object:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;aspect=new XmlObjectAspect(doc.getXmlObject());&lt;br/&gt;response=context.createResponseFrom(aspect);&lt;br/&gt;response.setMimeType("text/xml");&lt;br/&gt;context.setResponse(response);&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;Process an XML object with an XSLT transform:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;req = context.createSubRequest();&lt;br/&gt;req.setURI("active:xslt");&lt;br/&gt;req.addArgument("operator","style.xsl");&lt;br/&gt;req.addArgument("operand", new XmlObjectAspect(doc.getXmlObject()));&lt;br/&gt;req.setAspectClass(IAspectXmlObject);&lt;br/&gt;table=new XML(context.issueSubRequestForAspect(req).getXmlObject());&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;font size="5"&gt;&lt;b&gt;Strange things I've noticed&lt;/b&gt;&lt;/font&gt;&lt;br/&gt;&lt;br/&gt;Building an XML object from an XmlObject when there is a leading comment, for example with this doc:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-xml"&gt;&lt;!-- converted by xmlverbatim.xsl 1.1, (c) O. Becker --&gt;&lt;div class="xmlverb-default"&gt;&lt;br/&gt;&amp;lt;!--&lt;span class="xmlverb-comment"&gt; comment &lt;/span&gt;--&amp;gt;&lt;br/&gt;
&amp;lt;&lt;span class="xmlverb-element-name"&gt;root&lt;/span&gt; /&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;You end up with a doc just containing a comment and no root element if you:&lt;br/&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" width="90%"&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="forum-code"&gt;&lt;pre&gt;doc=new XML( context.sourceAspect( "doc.xml",IAspectXmlObject). getXmlObject() );&lt;br/&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br/&gt;&lt;br/&gt;Building an XML object from a String when there are an comments - all comments get lost!&lt;/div&gt;</description><pubDate>Fri, 13 May 2005 16:14:00 GMT</pubDate></item></channel></rss>