Mi enfoque para esto era canonicalizar la representación del esquema XML.
Lamentablemente, también puedo decirles que, a diferencia de la canonicalización de documentos XML (utilizada, por ejemplo, para calcular una firma digital), no es tan simple ni uniforme.
Así que, básicamente, tiene que transformar ambos esquemas XML a una "forma canónica", cualquiera que sea la herramienta que construya o use piensa de esa forma, y luego haga la comparación.
Mi enfoque era crear un conjunto de esquemas XML (podría ser más de un archivo si tienes más espacios de nombres) para cada elemento raíz que necesitaba, ya que me resultaba más fácil comparar XSD creadas con el estilo Russian Doll, empezando por el modelo PSVI.
Luego utilicé opciones tales como la coincidencia automática de los miembros del grupo de sustitución junto con la sustitución de los grupos de sustitución con una opción; eliminación de secuencias de esquemas XML "superfluas", colapso de opciones de opciones individuales o movimiento de entradas mínimas/oportunidades máximas para compiladores de elementos individuales, etc.
Dependiendo de las características de su herramienta de comparación con XSD, o si decide instalar, usted también podría tener que reorganizar las partículas en los compositores, como xsd: choice o xsd: all; etc.
De todos modos, lo que aprendí después de todo fue que es extremadamente difícil construir una herramienta que funcione bien para todas las características "geniales" de XSD ... Un caso de prueba que recuerdo con cariño fue el de tratar con varios xsd: cualquier contenido.
me pregunto aunque si las cosas han cambiado desde ...
Darn Tenía la esperanza de que hubiera alguna manera "simple" que me estaba perdiendo. La publicación que no puedo encontrar y que está atrapada en mi cabeza fue a lo largo de las líneas de XSOM que es la canonización del XSD que luego podría ser comparado. ¿Qué herramientas de comparación de XSD usabas? –
XSOM no es una canonización del XSD, seguro; tal vez se estaban refiriendo a la "vista" de PSVI que XSOM compila para ti. Pero eso solo podría usarse para ciertos escenarios muy básicos. Todavía tendrá que aplicar sus transformaciones personalizadas para generar nuevos XSD si desea que las herramientas externas hagan la comparación por usted.No tengo conocimiento (ni lo he aprendido aún) de ningún XSOM que serialice la vista PSVI de nuevo en un archivo XSD ... Terminé escribiendo toda una herramienta yo mismo, y finalmente lo califiqué como una Refactorización de esquemas XML; la conversión a una muñeca rusa no sobrevivió a la versión 1.0 ... –