XML Attribute

From the Oblivion ConstructionSet Wiki
Jump to navigation Jump to search

XML uses named attributes to specify additional info for an element. The XML syntax doesn't specify what attributes are possible, only that they be given as AttributeName="Value" in the opening tag of an element. Oblivion XML recognizes only three true XML attributes: name, src, and trait.

The name attribute provides a way to identify elements in a menu file. This attribute is used only for Object Elements - property or operator elements are never named. The name of an element need not be unique within the entire menu, but every element should at least have a different name from it's siblings (as discussed below).

<!-- the 'name' attribute of this element has the value "PictureFrame" -->
<rect name="PictureFrame"> </rect> 

The src and trait attributes are always provided together (except for the special case of the Include Element). They are used only in empty Operator elements, to specify the value used by the operator:

The src attribute can refer to any Object Element by it's name, or can use one of the "relative" sources:

  • Me() - the object whose property the operator is modifying.
  • Parent() - the parent of Me(), that is the element of which Me() is a child.
  • Sibling(SiblingName) - a the siblings of Me(), that is the elements that are also children of Parent(). The name of the sibling can be provided as an argument - this is why no two siblings should have the same name. When omitted it will use the sibling that came before it - the one that was defined above it in the XML (doesn't work for the very first element).
  • Child(ChildName) - a child object of Me(). Again, the name must be specified. The search for ChildName isn't restricted to direct children - it also includes children of children, and their children, and so on. If multiple children with the same name exist the last one specified in the xml is used.

The trait attribute can refer to any Property Element (or "trait") of the source. The current value of the property is used as value of the operator.

<image>
   <x>
     <!-- The Add Operator gets its value from the Width Property/Trait of SomeElement.-->
     <!-- The result is to add SomeElement's width to the current x value of this image -->
     <add src="SomeElement" trait="width" /> 
   </x>
</image>