You are not logged in Log in Join
You are here: Home » Members » jim » ZDOM-save » InitialNotes

Log in
Name

Password

 
 

InitialNotes

Zope/XML Integration

InitialIssues

Goals

XML -> Zope

Loading XML text creates objects

Loading XML text causes objects to be created. These objects are DOM objects and Zope objects.

Assigning behavior

A mapping can be defined for assigning classes to elements. The classes can be ZClasses? or regular Python classes that have been registered during product initialization.

The mapping is namespace aware. In fact, we may require that namespaces be Iused. Perhaps we can provide an option during import to specify a default namespace.

A class can register for more than 1 tag. A class can register as the default for a namespace.

Should there be a way to register a class for an attribute?

Should we instantiate id and idref links? (Probably)

Validation

We should provide optional validation support. This might be achieved in a number of ways:

  • Let custom instances perform validation during building.
  • Embed validation rules in custom in custom class definitions.
  • Use validation rules (e.g. state machine) compiled and cached from data such as DTDs? and other kinds of schema information.
Custom-object parsing protocol

How are instances created? In particular, what protocols do custom classes have to support when constructcd? Are there existing standards for this? Some posibilities:

  • Call constuctor wlth sequence of sub-elements and attribute mapping

    def __init__(self, elements, attributes)

    This is simple, but pretty XML specific. We also don't get to build the object until the subobjects are built.

  • Call constructor with parent node and attributes and call addElement with each element.

    def __init__(self, parent, attributes)

    def addElement(self, element)

    Maybe after after creating an element, we use it in the context of the parent:

    e=aClass(p,a)

    p.addElement(e)

    e=e.__of__(p)

  • Does the DOM define this?
Optimization
Not every element should be a database object

How do we decide which?

  • Custom class
  • Elements known, from schema information, to have subobjects are persistent.
  • Elements start out non-persistent and are made persistent when they get subelements.

Want an efficient data structure, especially for standard XML objects