Tenemos una tabla con los registros (cfd) y una con el xml como un blob o text, la estructura que yo uso es así:
y luego para hacer una consulta básica sería algo como esto:
SELECT F.id,F.fechadoc, extractValue(R.dataxml,'//cfdi:Complemento/tfd:TimbreFiscalDigital/@UUID') , extractValue(R.dataxml,'//cfdi:Comprobante/cfdi:Emisor/@Rfc') as "RFC Emisor", extractValue(R.dataxml,'//cfdi:Comprobante/cfdi:Emisor/@Nombre') as "Emisor", extractValue(dataxml,'//cfdi:Conceptos/cfdi:Concepto/@Importe') as Monto, extractValue(dataxml,'//cfdi:Conceptos/cfdi:Concepto/@Descripcion') as Concepto FROM cfd F, cfdRaw R WHERE F.id = R.id AND F.id=127
Es todo, algo como lo anterior me regresa la consulta de la imagen. Así, directamente podemos interactuar con la estructura de las facturas CFDi 3.3 que se emiten y valida el SAT. Lo bueno: evitar crear campos para cada cosa cuando se manejan facturas XML, lo malo es que MySQL en versiones menores a 5.7 tratan las consultas como un texto normal, me parece que en la 5.7 ya se pueden crear índices sobre datos específicos del XML.
Estoy trabajando en un proyecto para llevar tus facturas personales de forma fácil y que puedas invitar a tu contador luego a que las revise, descargue, consulte, busque, etcétera, todo en un mismo lugar, evitando pérdida de documentos o andar intercambiando correos interminables. El proyecto está muy verde aún - CONTA es posible entrar con tu cuenta de Facebook.
https://panchito-kardashian.tar.mx/media/2017/12/consultaXMLdb.jpg