Esto es realmente una cuestión completamente XPath.
Uso:
/*/project[title = 'Project X']/following-sibling::project[1]
Esto selecciona cualquier primer tras hermanos Project
de cualquier elemento Project
que es un hijo del elemento superior en el documento XML y el valor de cadena de al menos de uno de sus title
children es la cadena "Project X"
.
XSLT - basado verificación:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:copy-of select=
"/*/project[title = 'Project X']/following-sibling::project[1]"/>
</xsl:template>
</xsl:stylesheet>
Cuando se aplica esta transformación en el documento XML proporcionado:
<projects>
<project>
<number>1</number>
<title>Project X</title>
</project>
<project>
<number>2</number>
<title>Project Y</title>
</project>
<project>
<number>3</number>
<title>Project Z</title>
</project>
</projects>
la expresión XPath se evalúa y el elemento seleccionado correctamente, se copia a la salida:
<project>
<number>2</number>
<title>Project Y</title>
</project>
Hola Dimitre, eso funciona a las mil maravillas. ¡Muchas gracias! – Tintin81
@ Tintin81: De nada. –