Valide XML usando XSD, un Resolver catálogo y JAXP DOM para XSLT

Antecedentes

Usando JDK 6 para cargar archivos XML en DOM . Los archivos XML deben validarse con un XSD. La ubicación del archivo XSD difiere según el entorno en ejecución. Asegurar que el XML se pueda validar contra un XSD, independientemente de la estructura del directorio, requiere un resolutor de catálogo. Una vez que se valida el XML, se puede transformar.

Entiendo que se puede usar un DocumentBuilderFactory para configurar dicha validación. Esto se logra utilizando un DocumentBuilder con un XMLCatalogResolver para encontrar el archivo XSD (y cualquier archivo incluido) asociado con un archivo XML.

Las preguntas sobre la validación de documentos XML utilizando un XSD derivado de catálogo incluyen:

  • JAXP: consulta del catálogo XSD de depuración
  • El validador de Java XML Schema con resolución de recursos personalizada no puede resolver elementos
  • ¿Se puede usar XMLCatalog para importar esquemas?
  • ¿Cómo cargar XMLCatalog desde recursos classpath (dentro de un jar), de manera confiable?
  • Validación de XMLSchema con el archivo Catalog.xml para resolver entidades
  • La resolución de definiciones de tipo del esquema importado en XJC falla
  • Encuentre elementos que pueden repetirse en un esquema xml utilizando Java
  • Servlets Java: validación xml contra xsd

La mayoría de estas preguntas y respuestas hacen referencia a una ruta de archivo XSD codificada, o usan SAX para realizar la validación, o pertenecen a DTD , o requieren dependencias JDOM , o no tienen transformación .

Problema

No existe una solución canónica que describa cómo emplear un catálogo XML para la validación XSD utilizando JAXP DOM, que posteriormente se transforma a través de XSLT. Hay un número de fragmentos , pero no, ejemplo autónomo completo que compila y ejecuta (menores de JDK 6).

Publiqué una respuesta que parece funcionar, técnicamente, pero es demasiado detallada.

Pregunta

¿Cuál es la forma canónica (usando las bibliotecas JDK 1.6) para validar y transformar un documento XML? Aquí hay un algoritmo posible:

  1. Crea un resolutor de catálogo.
  2. Crea un analizador XML.
  3. Asociar el solucionador con el analizador.
  4. Analiza un documento XML que contiene una referencia XSD.
  5. Terminar en errores de validación.
  6. Transforme el XML validado utilizando una plantilla XSL.
Respuesta 1

Quiero llamar dos tablas de diferentes bases de datos a la vez. La tabla de la base de datos A contiene la identificación del usuario y la tabla de la base de datos B contiene la ubicación del usuario con la identificación del usuario, por lo que quiero unir estas dos tablas y obtener ...

Necesito saber si el horario de verano está activado ahora usando las nuevas clases de fecha y hora de Java 8. Encontré una entrada sobre cómo hacer esto en jodatime: jodatime cómo saber si el horario de verano está activado Pero, ¿cómo puedo ...

Estoy intentando subir el archivo. Funciona para mí, pero si quiero usar el archivo de carga no funciona. Recibo este error Estado HTTP 405: el método de solicitud 'POST' no es compatible, pero si comento esto ...

Estoy tratando de mostrar un archivo de imagen tan pronto como se selecciona de un selector de archivos. El selector de archivos está restringido a archivos .png y .jpg con los archivos seleccionados almacenados en una variable de tipo ...