У меня есть этот XML-файл
<?xml version="1.0"?>
<ns0:personas xmlns:ns0="http://www.personas.com">
<ns0:persona>
<ns0:idee>idee_1</ns0:idee>
<ns0:nss>nss_1</ns0:nss>
<ns0:curp>curp_1</ns0:curp>
<ns0:rfc>rfc_1</ns0:rfc>
<ns0:nombre>nombre_1</ns0:nombre>
<ns0:apellido-paterno>apellido-paterno_1</ns0:apellido-paterno>
<ns0:apellido-materno>apellido-materno_1</ns0:apellido-materno>
<ns0:agregado-medico>agregado-medico_1</ns0:agregado-medico>
<ns0:agregado-afiliacion>agregado-afiliacion_1</ns0:agregado-afiliacion>
</ns0:persona>
<ns0:persona>
<ns0:idee>idee_1</ns0:idee>
<ns0:nss>nss_1</ns0:nss>
<ns0:curp>curp_1</ns0:curp>
<ns0:rfc>rfc_1</ns0:rfc>
<ns0:nombre>nombre_1</ns0:nombre>
<ns0:apellido-paterno>apellido-paterno_1</ns0:apellido-paterno>
<ns0:apellido-materno>apellido-materno_1</ns0:apellido-materno>
<ns0:agregado-medico>agregado-medico_1</ns0:agregado-medico>
<ns0:agregado-afiliacion>agregado-afiliacion_1</ns0:agregado-afiliacion>
</ns0:persona>
<ns0:persona>
<ns0:idee>idee_1</ns0:idee>
<ns0:nss>nss_1</ns0:nss>
<ns0:curp>curp_1</ns0:curp>
<ns0:rfc>rfc_1</ns0:rfc>
<ns0:nombre>ramon</ns0:nombre>
<ns0:apellido-paterno>apellido-paterno_1</ns0:apellido-paterno>
<ns0:apellido-materno>apellido-materno_1</ns0:apellido-materno>
<ns0:agregado-medico>agregado-medico_1</ns0:agregado-medico>
<ns0:agregado-afiliacion>agregado-afiliacion_1</ns0:agregado-afiliacion>
</ns0:persona>
</ns0:personas>
Я бы хотел удалить все элементы, которые не повторяются. Например, желаемый результат из приведенного выше примера xml должен быть:
<?xml version="1.0"?>
<ns0:personas xmlns:ns0="http://www.personas.com">
<ns0:persona>
<ns0:idee>idee_1</ns0:idee>
<ns0:nss>nss_1</ns0:nss>
<ns0:curp>curp_1</ns0:curp>
<ns0:rfc>rfc_1</ns0:rfc>
<ns0:nombre>nombre_1</ns0:nombre>
<ns0:apellido-paterno>apellido-paterno_1</ns0:apellido-paterno>
<ns0:apellido-materno>apellido-materno_1</ns0:apellido-materno>
<ns0:agregado-medico>agregado-medico_1</ns0:agregado-medico>
<ns0:agregado-afiliacion>agregado-afiliacion_1</ns0:agregado-afiliacion>
</ns0:persona>
<ns0:persona>
<ns0:idee>idee_1</ns0:idee>
<ns0:nss>nss_1</ns0:nss>
<ns0:curp>curp_1</ns0:curp>
<ns0:rfc>rfc_1</ns0:rfc>
<ns0:nombre>nombre_1</ns0:nombre>
<ns0:apellido-paterno>apellido-paterno_1</ns0:apellido-paterno>
<ns0:apellido-materno>apellido-materno_1</ns0:apellido-materno>
<ns0:agregado-medico>agregado-medico_1</ns0:agregado-medico>
<ns0:agregado-afiliacion>agregado-afiliacion_1</ns0:agregado-afiliacion>
</ns0:persona>
</ns0:personas>
Я получил эти функции:
Там больше кода над этим
fn:remove($persona, xf:index-of-node($no-duplicado, $persona))
declare function xf:index-of-node ( $arg as element()? , $substring as element()* ) as xs:integer* {
if (contains($arg, $substring))
then (string-length(substring-before($arg, $substring))+1,
for $other in
xf:index-of-node(substring-after($arg, $substring),
$substring)
return
$other + string-length(substring-before($arg, $substring)) + string-length($substring))
else ()
} ;