XML files always have their own hierarchy. If you want to forcibly over-write or do not want to over-write a setting stored in an XML file, you must create its hierarchy to refer to the element's attributes and value.

If you want to create a hierarchy rule for an element's text, then use the following format:

(<ElementHierachy>).#text

If you want to create a hierarchy rule for an element's attribute, then use the following format:

(<ElementHierachy>).<attributeName>

<ElementHierarcy> has the following format:

(<RootElement[ID]>/<childElement[ID]/[<childElement[ID]/...>)

ID is optional for each root or child element and, if not provided, it applies to all the elements. Here is a sample XML file:

<web-app>
    <servlet>
        <servlet-name>Aia</servlet-name>
        <servlet-class>com.progress.aia.Aia</servlet-class>
        <init-param>
           <param-name>InstallDir</param-name>
           <param-value>C:\Progress\OpenEdge</param-value>
        </init-param>
        <init-param>
           <param-name>instanceName</param-name>
           <param-value>Aia1</param-value>
        </init-param>
        <init-param>
           <param-name>propertyFileName</param-name>
           <param-value>C:\Progress\OpenEdge/properties/ubroker.properties</param-value>
        </init-param>
   </servlet>
</web-app>

If you do not want to OVERRIDE or FORCE-OVERRIDE the highlighted init-param, you can construct the hierarchy rule as follows:

(web-app/servlet/init-param[InstallDir]/param-value).#text

Here, web-app is the RootElement. Its child is servlet, and the servlet contains init-param. The init-param is the text value of installDir. So, installDir is the ID that you provide within square brackets.

Note that an ID for servlet is not added, so the above hierarchy applies to all servlets that have init-param as InstallDir. If you want the rule to be applied to a single servlet, say AIA, your hierarchy rule must look like this:

(web-app/servlet[Aia]/init-param[InstallDir]/param-value).#text

Here is a sample configutil.properties with XML hierarchy rule:

[$TCIB_HOME/webapps/aia/WEB-INF/web.xml]
  FORCE_OVERRIDE:(web-app/servlet/init-param[InstallDir]/param-value).#text
  FORCE_OVERRIDE:(web-app/servlet/init-param[propertyFileName]/param-value).#text

Here is another sample XML file:

<portlist udp="" udpmin="1" udpmax="300" tcp="" tcpmin="1" tcpmax="200">
   <port number="21" type="TCP" name="FTP"/>
   <port number="80" type="TCP" name="HTTP"/>
   <port number="110" type="TCP" name="POP3"/>
   <port number="25" type="TCP" name="SMTP"/>
   <port number="119" type="TCP" name="NNTP"/>
   <port number="143" type="TCP" name="IMAP"/>
   <port number="23" type="TCP" name="Telnet"/>
   <port number="389" type="TCP" name="LDAP"/>
   <port number="547" type="TCP" name="DHCPv6"/>
   <port number="53" type="UDP" name="DNS"/>
   <port number="161" type="UDP" name="SNMP"/>
 </portlist>

If you want to retain or override the number for HTTP port, add the following in the configutil.properties file:

[$oemgmt/conf/Ports.xml]
DONT_OVERRIDE:(portlist/port[HTTP]).number