W3C home > Mailing lists > Public > whatwg@whatwg.org > July 2014

[whatwg] Revive E4X

From: L2L 2L <emanuelallen@hotmail.com>
Date: Fri, 25 Jul 2014 18:11:26 -0400
Message-ID: <BAY402-EAS124A154A5ACAEC5D75F6989DEFC0@phx.gbl>
To: "whatwg@lists.whatwg.org" <whatwg@lists.whatwg.org>
I am a novice programmer who fell in love with ECMAScript, and XML. I feel in love with xml after I found xqib. I was and still am zeal about it that I push myself to learn xml, xslt, schema(and out of respect DTD).

I am currently trying to accomplish two things:

One: revive of e4x

Two: revive of xqib

My proposal for e4x:

An interface point of view(short and simple)

Change spec name to EDPQO(ECMAScript's DOM Parser & Query Object)

EDPO acting as a internal representation of the DOM in an ESON(JSON) format

All communication with this representation via ESON(JSON) syntax

Scrap everything but the methods and properties.

Change the XML(); object name to DOM(); to indicate that it's for XML, HTML, XHTML, XSLT, Schema, and the likes(anything that's is base XML.

 A reference interface object; allowing communication with the document object model through a shallow copy of it via ESON(JSON) syntax: 

var doc = DOM();

Doc.load(note.xml);
Doc.load(page.html);
Doc.load(page.xhtml);
Doc.load(pageschema.xsd);
Doc.load(pagetransform.xslt);

All access possible via ESON(JSON) syntax.

Allow xPath 1.0 support through the method:
xPath(*/expression*/);
To use xPath expression to nevigate through the DOM object.

Example: doc.xPath("/html/body/p");

Remove support for native element via <></>

For example:

XML file to be use:
<note> 
 <date>2002-08-01</date>    
 <to>Tove</to>
 <from>Jani</from> 
 <heading>Reminder</heading> 
 <body>Don't forget me this weekend!</body> 
</note>

Example:
E4X spec.
var Doc=new DOM();
Doc.load("note.xml");


ESON syntax:

console.log(Doc.body);

Along with ESON(JSON) syntax, allow for added method of Number, String, Array, Object, RegRxp. Since  data type are automatically wrapped, they should be NO complication of allowing this.

A display of a few methods:

This /**"/note/body"**/ is within body element as the last child, after the textNode:

Doc[4].body.ps = "also, don't forget to bring a jacket";

note that body is an object, as note is am array of elements that cannot hold node text. The body.ps adds a new element to body: <ps>"Also, don't forget to bring a jacket!"</ps>:
<note>
<!--...-->
 <body>
Don't forget me this weekend!
   <ps>
"Also, don't forget to bring a jacket!"
   </ps>
 </body> 
</note>


This /**"/note/"**/ is after body element:
Doc[Doc.length ].concat("<ps>also, don't forget to bring a jacket</ps>");

<note>
<!--...-->
 <body>
Don't forget me this weekend!
 </body> 
 <ps>
"Also, don't forget to bring a jacket!"
 </ps>
</note>

This /**"/note/"**/ is before body element (note: index 4 is note's child heading element)


The following example is the same as:
var note = ["date","to","from","heading","body"];
note.splice(4,0,"ps");
note;//output: ["date","to","from","heading","ps","body"];

xmlDoc.splice(4, 0 , "<ps>also, don't forget to bring a jacket</ps>");

xPath 1.0 for the xPath(); method

With attribute, I say to use the xPath(/*expression*/); method to retrieve that via string:

<date attr="value">
 2002-08-01
</date>

Doc.xPath("/note/date/@attr");
//xPath 1.0 spec
);

Via ESON syntax:

/*as the attribute node(object) is a child of the date node(object); it stand to reason that it is also a object within the date object that can only hold text*/

Doc[0].date[0].attr"; //"value"

For xqib, please look at this site: 

http://www.xqib.org/index.php

The old e4x program is already written, just need to be extracted to adopt. Mirth connect is an open source that have the e4x still apart of their software.

My apologies for and mistake.

Thank you for reading.
E-S4L
Received on Friday, 25 July 2014 22:11:57 UTC

This archive was generated by hypermail 2.4.0 : Wednesday, 22 January 2020 17:00:21 UTC