r3wp [groups: 83 posts: 189283]
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r3wp

[XML] xml related conversations

Volker
28-Oct-2005
[34]
So if we implement this api in rebol, we could use standard documentation? 
And browsers are based on DOM, we could map that to rebol-plugin 
and control browser?
Pekr
28-Oct-2005
[35]
it seems so ...
Chris
28-Oct-2005
[36]
; In REBOL?
header: first document/get-elements-by-tag-name <h1>
set in header/first-child 'data "A dynamic document"

para: first document/get-elements-by-tag-name <p>
set in header/first-child 'data "This is the first paragraph."


new-text: document/create-text-node "This is the second paragraph."
new-element: document/create-element <p>
new-element/append-child new-text

parent: para/parent-node
parent/append-child new-element
Pekr
28-Oct-2005
[37]
the zero based indexing might be a problem here, no? but who knows 
... such functions as "get-element-by-tag-name" etc. I do remember 
from Gabriele's Temple :-)
Volker
28-Oct-2005
[38]
Then we should start there. conversion to xml may than suddenly be 
simple.
Pekr
28-Oct-2005
[39]
So the DOM would be more usefull than having SAX? (if that is correctly 
laid question)
Volker
28-Oct-2005
[40]
AFAIK yes. SAX is efficient, dom simple to use.
Chris
28-Oct-2005
[41]
Well, perhaps DOM will be efficient in its Rebol incarnation :o)
Volker
28-Oct-2005
[42]
SAX is like parse. [a-tag another-tag (do-something) /a-tag]. DOM 
works like load does. AFAIK.
Pekr
28-Oct-2005
[43]
so what is the difference basically in when you parse XML document 
using SAX and using DOM?
Volker
28-Oct-2005
[44]
So with DOM you need all in memory, with SAX you can stream.
Pekr
28-Oct-2005
[45]
then SAX is better, no?
Volker
28-Oct-2005
[46x3]
As programmer not AFAIK. with a dom you can use path-notation. with 
SAX you build that tree yourself. I guess SAX makes sense when you 
convert data, like xml-make-doc. one tag, output something, another 
tag, output something other.
If its more like a block of records, it would be DOM. parse<->sax, 
load <-> DOM.
Thats what i understand from the overviews. Then comes how it works, 
and i am quickly back to real parse and load..
Pekr
28-Oct-2005
[49]
There are two major types of XML (or SGML) APIs:

Tree-based APIs

    These map an XML document into an internal tree structure, then allow 
    an application to navigate that tree. The Document Object Model (DOM) 
    working group at the World-Wide Web Consortium (W3C) maintains a 
    recommended tree-based API for XML and HTML documents, and there 
    are many such APIs from other sources. 
Event-based APIs

    An event-based API, on the other hand, reports parsing events (such 
    as the start and end of elements) directly to the application through 
    callbacks, and does not usually build an internal tree. The application 
    implements handlers to deal with the different events, much like 
    handling events in a graphical user interface. SAX is the best known 
    example of such an API.
Chris
28-Oct-2005
[50]
It should work -- XML -> DOM -> XML -- with the DOM being a document 
structure and a collection of methods for manipulating itself.
Pekr
28-Oct-2005
[51]
taken from: http://www.saxproject.org/event.html
Chris
28-Oct-2005
[52]
If the internal representation is an object-base tree, what are the 
barriers to the 'get-elements-by-tag-name function?
Volker
28-Oct-2005
[53]
Yes, load is our tree, parse our events. Think of parse as "Here 
comes the word 'file. Yuppa, and a real 'file! . Good, and a 'binary!. 
(fine, now i store that data in that file)"
Chris
28-Oct-2005
[54]
http://www.zvon.org/xxl/DOM2reference/Output/index.html
Pekr
28-Oct-2005
[55]
what would you find more usefull when working with XML? DOM sounds 
good when working with loaded document, all those find-element-by-name 
etc funcs sound usefull. For streaming kind of purposes (protocols), 
SAX sounds being a better option ...
Volker
28-Oct-2005
[56]
Yes, that what i understand too.
Chris
28-Oct-2005
[57]
What are the SAX methods for manipulating an XML document, and how 
easy is it to save the changes?
Pekr
28-Oct-2005
[58]
Chris - following is true imo which favors SAX with me:


Tree-based APIs are useful for a wide range of applications, but 
they normally put a great strain on system resources, especially 
if the document is large. Furthermore, many applications need to 
build their own strongly typed data structures rather than using 
a generic tree corresponding to an XML document. It is inefficient 
to build a tree of parse nodes, only to map it onto a new data structure 
and then discard the original.
Chris
28-Oct-2005
[59]
You've lost me...
Pekr
28-Oct-2005
[60x2]
The thing is - result of DOM parsing is tree representation of document 
- in Rebol .... the question is, what if you need data organised 
otherwise? You will have to search that tree and build such structure 
which fits you anyway ....
yes, saving the changes - will have to think about it. .... it might 
be tricky, if even possible :-)
Chris
28-Oct-2005
[62]
Which is the point in my suggesting the DOM :o)
Pekr
28-Oct-2005
[63x2]
so we should have both :-)
or just kind of clever REBOL mixture :-)
Chris
28-Oct-2005
[65]
I don't think the DOM should be as complex as you suggest.
Pekr
28-Oct-2005
[66]
noone said we have to develop 1:1 solution ... let's develop one 
which fits the need best ...
Volker
28-Oct-2005
[67x2]
actually that description favors DOM. First, we dont want to save 
memory, we are scripters. We use load too.. Second, we are not strongly 
typed (they mean static typed). SO we can happily be generic.
Organizing data - if data is in blocks, you can use path-notation, 
but also runwith a parse-rule through the loaded data.
Sunanda
28-Oct-2005
[69]
Chris < it appears not to work out the box...>

I'm using Gavin's script from REBOL.org unmodified in a real project.
It works for me.

But I may be encountering a different subset of XML possibilities 
to you.
Chris
28-Oct-2005
[70]
It is a complete (as is my understanding) way to manipulate an XML 
document.  It is also a standard, familiar to anyone who has used 
Javascript.
Pekr
28-Oct-2005
[71x2]
ok, is anywhere complete and nice DOM specs? W3C org?
But we should not think that having DOM will allow us to manipulate 
website elements, as having document loaded into rebol DOM will not 
allow us to manipulate DOM tree loaded into browser :-)
Volker
28-Oct-2005
[73]
But for that parse-rule we need a fixed mapping, i think i start 
with functions first, until i know what i need. Easier to change.
Chris
28-Oct-2005
[74x2]
>> do http://www.rebol.org/cgi-bin/cgiwrap/rebol/download-a-script.r?script-name=xml-parse.r
>> parse-xml+ read http://www.ross-gill.com/
** Script Error: Invalid path value: parse-xml
** Where: parse-xml+
** Near: xml-parse/parser/parse-xml code
(that looks mangled in my AltME window)
Volker
28-Oct-2005
[76]
If they are functions, we can map the same names to browser-calls. 
think protocols.
Chris
28-Oct-2005
[77x2]
Petr -- look at my links above...
Petr, that is exactly what the DOM does -- and web site elements 
*are* xml.
Volker
28-Oct-2005
[79]
Btw Chirs, thanks for the links.
Chris
28-Oct-2005
[80x2]
Wait, I'm reading your sentence incorrectly.
No worries, again this seems straightforward -- http://www.zvon.org/xxl/DOM2reference/Output/index.html
Sunanda
28-Oct-2005
[82]
Chris -- that do from REBOL.org works for me.

parse-xml is an RT mezzanine. Perhaps its not present in your rebol.exe
Chris
28-Oct-2005
[83]
Petr, I don't anticipate being able to manipulate a browser's DOM.