XOne ha implementado un atributo a nivel de Colección que permite heredar Grupos, Frames, Propiedades y Nodos.
Esta herencia nos permite agilizar la programación de la Aplicación, pero es importante conocer que al heredar de una colección lo que hacemos es simular como una mezcla entre Colección PADRE y Colección HIJO, pues siempre van a prevalecer las definiciones y funciones del HIJO.
El atributo que se utiliza inherits y se define en la declaración de la Colección.

<coll name="EspecialHerencia" title="" filter="" sort="" notab="false" special="true" inherits="groupsFixed" group-swipe="true">


Al heredar de una colección la colección HIJO resultante tendrá todos los elementos de Colección PADRE e HIJO, pero en caso de existir duplicidad de algún elemento (group, frame, prop, etc) va a primar lo que esté definido en la colección HIJO




Ejemplo:


Colección PADRE

<coll name="groupsFixed" title="" filter="" sort="" special="true">
    <group name="HEADER" id="999" class="groupfixed_header">
        <frame name="frmtitulo" class="frmsuperior">
            <prop name="SALIR" type="B" class="btvolversuper" />
            <prop name="MENU" type="TL" class="tlsuper" title="Herencia" />
            <prop name="MAP_COLORACTIVO" type="T" visible="0" />
        </frame>
    </group>   
    <group name="FOOTER" id="0" class="groupfixed_footer">
        <prop name="MAP_GROUP" type="N" visible="0" />
        <prop name="MAP_TOTAL_PAGES" type="N" visible="0" />
        <frame name="FLOAT_FOOTER_FRAME" class="frmsuperior">
            <prop name="MAP_LAST" type="B" img="last.png" title="Anterior" onclick="javascript:prev(self,'ir'); ui.refresh('MAP_LAST', 'MAP_NEXT', 'MAP_LAST_EMPTY');" forecolor="#FFFFFF" width="45%" height="80%" labelwidth="1" imgsel="last-sel.png" disablevisible="MAP_GROUP=1" />
            <prop name="MAP_LAST_EMPTY" type="B" bgcolor="#00000000" width="45%" height="80%" labelwidth="1" newline="false" disablevisible="MAP_GROUP&gt;1" />
            <prop name="MAP_NEXT" type="B" img="next.png" title="Siguiente " onclick="javascript:next(self,'ir'); ui.refresh('MAP_LAST', 'MAP_NEXT', 'MAP_LAST_EMPTY');" forecolor="#FFFFFF" width="45%" height="80%" labelwidth="1" newline="false" lmargin="6%" imgsel="next-sel.png" disablevisible="MAP_GROUP=MAP_TOTAL_PAGES" />
        </frame>
    </group>
    <group name="Group1" id="1">
        <prop name="MENU2" type="TL" class="classtl" title="Este grupo está heredado de una coleccion , junto con los grupos fijos , de arriba y abajo." label-wrap="true" />
    </group>
    <onback show-wait-dialog="false">
        <action name="runscript">
            <script language="javascript">
	      	    appData.failWithMessage(-11888,"##EXIT##");
	        </script>
        </action>
    </onback>
</coll>


Nótese el uso del atributo inherits en la declaración de la colección HIJO


Colección HIJO

<coll name="EspecialHerencia" title="" filter="" sort="" notab="false" special="true" inherits="groupsFixed" group-swipe="true">
    <group name="HEADER" id="999" >
        <frame name="frmtitulo" class="frmsuperior">
            <prop name="MENU" type="TL" class="tlsuper" title="Herencia" />
        </frame>
    </group>   
 
    <group name="Group1" id="1" >
 
    </group>
 
    <group name="Group2" id="2">
        <include-layout file="EjemploIncludeLayout.xml" group="2" />
    </group>
 
    <before-edit>
        <action name="runscript">
            <script language="javascript">			
			    self.MAP_GROUP = 1;
			    self.MAP_TOTAL_PAGES = 2;
			    self.MAP_COLOR1 = "#FFFFFF";
			    self.MAP_COLOR2 = "#000000";
 
		    </script>
        </action>
    </before-edit>
</coll>


Permite agregar nodos definidos en otro XML externo.

Ejemplo:

Se pone el siguiente nodo en la colección en la parte donde queramos incluir los controles.
En este nodo se puede definir frame y group para si en el fichero existen props que no tengan definido esto, se les pone lo que se le defina en el nodo Include-Layout.

    <include-layout file=<nowiki>"MisBotones.xml"</nowiki> group="1" frame="todo" />


Colección de ejemplo donde usamos el include-layout.

   <coll name="MenuEntrada" special="true" notab="true">
      	<group name="General" id="1" />
      	<frame name="todo" width="100%" height="100%" scroll="true" />
  <prop group="1" frame="todo" name="MAP_TEXTO_01" type="T" title="Texto #1" visible="1" labelwidth="10" width="100%" />
  <prop group="1" frame="todo" name="MAP_TEXTO_02" type="T" title="Texto #2" visible="1" labelwidth="10" width="100%" />
  <prop group="1" frame="todo" name="MAP_TEXTO_03" type="T" title="Texto #3" visible="1" labelwidth="10" width="100%" />
  <include-layout file="MisBotones.xml" group="1" frame="todo" />
  <prop group="1" frame="todo" name="MAP_TEXTO_04" type="T" title="Texto #4" visible="1" labelwidth="10" width="100%" />
  <prop group="1" frame="todo" name="MAP_TEXTO_05" type="T" title="Texto #5" visible="1" labelwidth="10" width="100%" />
  </coll>


Definición del fichero "MisBotones.xml@, la estructura de estos ficheros debe ser de forma no jerárquica.

  <?xml version="1.0" encoding="iso-8859-1"?>
  <xml>
  <prop name="MAP_SALIR" type="B" title="Salir" visible="1" method="ExecuteNode(salir)" width="100%" height="20%" labelwidth="10" tmargin="0" />
  	<salir refresh="false">
    		<action name="runscript" type="runscript">
      			<script language="javascript">
				appData.failWithMessage(-11888, "##EXITAPP##");
			</script>
    		</action>
  	</salir>
   </xml>