When an element inherits from a structure, the structure's elements are used to create child elements of the inheriting element. The structure doing the inheriting is called the child structure, and the structure from which the elements were inherited is the parent structure.
An element inherited from another is indicated with a black arrow icon decoration.
If element(s) are changed in the parent structure, the changes are automatically propagated to all child structures. This propagation happens immediately, so for example you can have an editor open for both the parent and child structures, add a new element in the parent structure and switch to the editor for the child structure and the new element will be present.
If you modify an inherited element in the child structure, this will be indicated by a gold triangle in the icon (signifying a delta, or change). This indicates that the child element is different than the parent element. You can see what the specified differences are by right clicking on the child element and selecting the Show Differences from Inherited Element menu item.
If you add an element in the child structure (as a descendant of an inheriting element), a yellow star will appear indicating the element is new in the child structure and not present in the parent structure.
The element at the point of inheritance (the element that specifies the parent structure) requires special consideration. There are some cases where you want none, some or all of properties of the element to be from the parent structure's root element. The Inherited Root property of the element (available in the element's properties when in Editable mode), specifies this by declaring which of the properties parent structure's root element are to be used. The following options are available:
Use Only Children - The element in the child structure is not modified by the parent structure at all. The only elements inherited from the parent structure are the child elements of its root and their descendants.
Use Everything - All properties from the parent's root element are used for the child element.
Use All Except Name/Occurs (XSD) - All properties come from the parent element except the element's name and minimum and maximum occurrences which remain those from the child element. This is used for XSD schema support.
Use All Except Name/Occurs/SeqId (EDI) - All properties come from the parent element except the element's name, minimum and maximum occurrences, and sequence Id which remain those from the child element. This is used for EDI support.
Use All Except Occurs/SeqId (EDI) - All properties come from the parent element except the element's minimum and maximum occurrences, and sequence Id which remain those from the child element. This is used for EDI support.
Structure inheritance combines the elements and their properties into the child structure. There are times however when the same property of an element has changed independently in both the parent and child structure. For example the maximum number of occurs may have changed in both places. When this happens, the conflict indicator is set in the element's properties and a warning is given anytime a map is executed using that structure. You will need to manually resolve this conflict possibly by changing the child structure, and then you can remove the conflict indicator in the element's properties.
Note that structure element conflicts can also occur with the addition of elements to a sequence in both the parent and child structure, as it's not clear what the final order of the elements should be. The new elements are marked as having a conflict.