Hi Yin, parseWithContext() does not take DOM nodes as input. An LSInput points to a stream (a serialized representation of XML) and when it cannot be loaded or violates some other constraint (e.g. the content cannot be inserted at the context node) then an exception should be thrown.
Thanks. Michael Glavassevich XML Parser Development IBM Toronto Lab E-mail: [email protected] E-mail: [email protected] Yin Lei <[email protected]> wrote on 03/17/2010 08:23:15 AM: > In W3C's recommendation specification about function parseWithContext: > input of type LSInput > The LSInput from which the source document is to be read. The source > document must be an XML fragment, i.e. anything except a complete > XML document (except in the case where the context node of type > DOCUMENT_NODE, and the action is ACTION_REPLACE_CHILDREN), a DOCTYPE > (internal subset), entity declaration(s), notation declaration(s), > or XML or text declaration(s). > > Does this sentence "The source document must be an XML fragment" > mean that input of the type LSInput must be a instance of > org.w3c.dom.DocumentFragment? If it is not, the parseWithContext > function implementation should throw out an exception,am i right? Thanks > > 2010/3/17 Yin Lei <[email protected]> > Hi Michael, > > Thank you for your answer first. I think i am a little confused by > W3C's recommendation about function parseWithContext's parameter > input of type LSInput.The recommendation is as follows: > > input of type LSInput > The LSInput from which the source document is to be read. The source > document must be an XML fragment, i.e. anything except a complete > XML document (except in the case where the context node of type > DOCUMENT_NODE, and the action is ACTION_REPLACE_CHILDREN), a DOCTYPE > (internal subset), entity declaration(s), notation declaration(s), > or XML or text declaration(s). > > Does it mean that the input XML fragment can only include DOCTYPE/ > entity declaration/notation declaration or XML or text declaration ? > So, i want to know, can this fragment include XML style file > include declation( for example:<?xml-stylesheet type="text/css" > href="cd_catalog.css"?>), or a XML element node(for example:<element > id="1"><name>firstElement</name></element>), or some thing else? > > If the input include a complete XML document indeed,what will my > parseWithContext function implementation do?Throw out an exception?? > > The last question,if parseWithContext(LSInput input, Node > contextArg, short action) function has the following input parameters: > input:<element id="1"><name>firstElement</name></element> > contextArg:<doc><element id="exist1"><name>leiyin</name></element></doc> > action:ACTION_INSERT_AFTER > I think the function with return the DOM Node "<doc><element > id="exist1"><name>leiyin</name></element></doc><element > id="1"><name>firstElement</name></element>", am i right? And what if > the parameter input include "<element id="1"><name>firstElement</name>" > (yes,missing end element), what will the function implementation do? > I think it will throw an exception, am i right ? > > Thank you very much and expecting your reply :) > > > 2010/3/16 Michael Glavassevich <[email protected]> > > Hi Yin, > > parseWithContext() isn't quite that simple. The input to this method > is an XML fragment which would generally not be a complete XML document. > > The goal of the project is to implement support for parsing XML > fragments. LSParser.parse(LSInput) is only capable of reading > complete XML documents and so cannot be used to implement parseWithContext()., > > > Thanks. > > Michael Glavassevich > XML Parser Development > IBM Toronto Lab > E-mail: [email protected] > E-mail: [email protected] > Yin Lei <[email protected]> wrote on 03/12/2010 09:28:12 AM: > > > > Hi Michael, > > > > I want to hold the project "Asynchronous LSParser and > > parseWithContext" as my GSoC 2010 proposal,and I have been researching > > > > Xerces's code for a long time. I will tell you my idea about this > > project and expecting for your advises. > > > > In Xerces-J 2.9.1's code,class > > org.apache.xerces.parsers.DOMParserImpl implements interface > > LSParser,but DOMParserImpl does not support asynchronous > > mechanism,if we want to make DOMParserImpl support asynshronous > > mechanism,we can achieve it by the following two steps: > > > > 1.DOMParserImpl should implements interface EventTarget > > > > Use a Vector ojbect (we name it repository) to store all the action > > listeners registered in the current LSParser object.Each of > > the action listener is made up of three parts,type,useCapture and > > event handler function. And then,we need achieve function > > addEventListener,dispatchEvent and removeEventListener. > > addEventListener: just add a action listener object in to repository > > .We should notice that listener with the same parameters can > > only be added once. > > dispatchEvent:traverse each item of repository,if some one has the > > same type value with the event and its useCapture value is > > true,let's dispatch its handleEvent function. > > removeEventListener: traverse each item of repository,if some one is > > the same as the object in the parameter,just remove this > > item from repository. > > > > 2.implement asynchronous mechanism > > > > When DOMParserImpl object's parse() function is dispatched,set busy > > value true, start a Thread to parse XML document in > > LSInput,and then return null value. When XML parse thread finish its > > parse job,set busy value false,create a LSLoadEvent object > > with type value load,dispatch function dispatchEvent(Event evt).If > > user register any actionlistener for load event,finish the > > job defined in actionlistener's handleEvent function. > > > > > > Implement function parseWithContext(LSInput input, Node contextArg, > > short action) > > > > parseWithContext is a synchronous function (even if LSParser is in > > asynchronous model). I think its implemention is simple (may > > be because i am naive), we just use DOMParserImpl's parse(LSInput > > input) function parse LSInput stream to a DOM tree, and merge this > > DOM tree with Node contextArg according parameter action, then > > return the result DOM tree. > > > > This is my mainly idea about this project,if you have any > > ideas,please let me know,thank you! > > > > Best regards > > > 2010/3/11 Michael Glavassevich <[email protected]> > > Hi Yin, > > > > Welcome to the mailing list. The LSParser project from the GSoC 2009 > > idea list is still available this year if you're interested. > > > > Thanks. > > > > Michael Glavassevich > > XML Parser Development > > IBM Toronto Lab > > E-mail: [email protected] > > E-mail: [email protected] > > > > Yin Lei <[email protected]> wrote on 03/09/2010 10:51:39 PM: > > > > > Hi guys, > > > > > > > > I am interested about the project "Asynchronous LSParser and > > > parseWithContext" at Gsoc 2009 idea list.And i noticed that this > > > project have not been done yet,so,i have been learning some > > > background knowledge about this project, and want to hold this > > > project as my GSoC 2010 proposal. But i am not sure whether this > > > subject will remain this year or not.Can anyone tell me? > > > > > > Thank you & best regards
