In the Nevron DOM, elements are the primary document building blocks. The abstraction of an element is defined by the
INElement interface. Elements are nodes (the
INElement interface derives from the
INNode interface). This ensures that elements can be organized in hierarchical structures.
Container and Composite Elements
A node container, which consists only of elements, must implement the
INElementContainer interface (derived from
INNodeContainer). Analogously a composite node, which can only contain elements, must implement the
INElementComposite interface).
Elements Identification
Elements are identifiable. Each element can be identified by its
Id or
UniqueId (the
INElement interface derives from the
INIdentifiable and
INUniquelyIdentifiable interfaces). The
Id of an element is unique only in the scope of the document in which the element resides. The
UniqueId of an element is a GUID, which ensures that the element can be uniquely identified in the scope of several documents.
Elements and Attributes
By design elements are attribute containers and are notified when their attributes change (the INElement interface derives from the INAttributeContainer and INAttributeObserver interfaces).
Cloning Elements
Elements can be cloned in two ways:
- Deep Clone with the same Unique Id - this type of cloning is performed by the standard .NET Clone() method (the INElement interface derives from ICloneable).
- Deep Clone with new Unique Id - this type of cloning is performed by the CloneWithNewUniqueId method. This method accepts a single parameter - a map of unique ids, which is populated with the made unique id changes.
Elements typically reference other elements by their unique id. Any unique ids, which an element stores in order to reference other elements are called foreign unique ids or element references. By design the INElement interface provides the basic means to change the element references with the help of the ReplaceForeignUniqueIds method.
Implementation
The Nevron DOM provides an implementation of the
INElementComposite interface, which is represented by the
NElementCompositeImpl class.