Leer el camino#

X4 utiliza un lenguaje se selector restringido en lugar de todo XPath. Compruebe su juego libraries/diff.xsd; la aceptación por un editor XPath no prueba la compatibilidad con X4.

Forma Significado
/items/item elementos hijos de la raíz de los elementos
[@id='a'] Filtro de atributos
/@enabled El atributo en sí
//item[@id='a'] Cualquier profundidad; comprobar la singularidad

Aportaciones de aprendizaje#

Estos son datos inventados, no un archivo X4:

XML
<items>
  <item id="a" enabled="false" />
  <item id="b" />
</items>

Parche independiente:

XML
<diff>
  <replace sel="/items/item[@id='a']/@enabled">true</replace>
  <add sel="/items/item[@id='a']" type="@label">demo</add>
  <remove sel="/items/item[@id='b']" />
  <add sel="/items">
    <item id="c" />
  </add>
</diff>

Resultado esperado#

XML
<items>
  <item id="a" enabled="true" label="demo" />
  <item id="c" />
</items>

replace cambia un atributo existente, add type="@label" añade uno, y remove Suprime b. La final add inserta c dentro de los elementos. Esta es una transformación esperada, no una salida de registro o una prueba de juego ejecutada.

Errores comunes#

Compruebe una coincidencia para cada operación. Reemplazar un elemento entero también elimina a sus hijos antiguos. Para agregar un atributo, seleccione el elemento a través de sel y nombre el atributo a través de type.

No confíes en contains(), Unión | o expresiones XPath completas arbitrarias. Investigar primero las coincidencias faltantes: silent suprime un informe sin fijar la ruta. un verdadero parche de barco y compatibilidad.