studio reales proyectos programacion libro introducción incluye herramientas fundamentos fuente español código con avanzado aplicaciones .net-3.5 xsd xml-serialization xsd.exe

.net 3.5 - reales - ¿Herramienta que puede combinar muchos archivos XSD en uno?



libro de android studio en español pdf (5)

Necesito crear clases de serializador XML para aproximadamente 65 archivos XSD, para los cuales estoy usando XSD.EXE de Microsoft para generar el código C # ...

Sin embargo, continúo encontrándome con el límite de caracteres de Windows CMD en el archivo de salida resultante (en el que XSD.EXE combina el nombre de cada XSD incluido): "La ruta de acceso especificada, el nombre de archivo o ambos son demasiado largos. El nombre de archivo completamente calificado debe tener menos de 260 caracteres y el nombre del directorio debe tener menos de 248 caracteres ".

Para resumir, parece que la única manera de validar y generar todos estos elementos es si puedo combinar todos los XSD (anulando las inclusiones / importaciones, que XSD.EXE no resuelve la ubicación del esquema) de todos modos) en uno grande.

Por favor, dime que existe una herramienta para hacer esto ...


Acabo de empezar a usar Altova XML Spy (1 día)

Para aplanar el esquema .xsd en un documento ... que todavía se validará y proporcionará referencias para hacer clic en eclipse ...

  1. abre el .xsd del que estás hablando ...
  2. El elemento del menú llamado (Diseño de esquema) tiene un elemento llamado (Esquema aplanado).
  3. Pinchalo. (Te preguntará dónde guardar el nuevo archivo ... Simplemente creo una carpeta de salida o algo así.

Parece funcionar bien.


Encontré una herramienta (básicamente un XSLT) para hacer este tipo de cosas: el XML Schema Flattener de Paul Kiel, pero aún no lo tengo en mis manos.

Otras fuentes dicen que herramientas como Oxygen XML Editor y XMLSpy pueden hacerlo, pero no puedo entender cómo.

-> http://www.oxygenxml.com/xml_schema_editor.html#xml_schema_flatten

En mi caso, resolví el problema a través de otra ruta tortuosa: acortando el nombre de cada XSD de entrada para que el nombre de salida combinado de XSD.EXE, que no puede elegir, esté por debajo del límite de 260 caracteres.


Lo que puede hacer es crear otro archivo nuevo llamado file.xsd que contenga todos los nombres de esquema y luego el truco es nombrar el último archivo de esquema con. / Como prefijo.

Archivo.xsd

<xsd xmlns=''http://microsoft.com/dotnet/tools/xsd/''> <generateClasses language=''CS'' namespace=''MyNamespace''> <schema>First.xsd</schema> <schema>Second.xsd</schema> <!-- more schema files here --> <schema>./Third.xsd</schema> </generateClasses> </xsd>

Ahora ejecute el comando "xsd.exe /p:file.xsd / classes" y obtendrá el archivo de clase generado :)


Para referencias futuras, otra herramienta diseñada para la refactorización de esquemas XML es QTAssistant - Estoy asociado con ella.

Para aclarar su pregunta y, con suerte, ayudar a otros ... Una cosa que no se puede lograr según lo solicite usted es que no se pueden desviar las importaciones: un archivo XSD está asociado con un esquema XML que no permite más de un espacio de nombres de destino por xsd: elemento de esquema.

Un xsd: include puede estar "en línea"; dado que los archivos deben tener el mismo espacio de nombres de destino o coincidir con el enfoque de diseño del espacio de nombres de "camaleón", es posible fusionar el contenido de un archivo en el otro.

Un xsd: import no puede estar "en línea" ... a menos que también refactorice los espacios de nombres de destino. Sin embargo, esto no produciría un conjunto de esquema equivalente.

Si tiene un conjunto de esquemas XML completamente definido creado en 65 archivos XSD, con unos 10 espacios de nombres, el conjunto "canónico" de archivos de esquemas XML remodelados debe tener al menos 10 archivos.


Simplemente agregue. / Prefix con el nombre del último archivo .xsd (esquema) y enciérrelo con comas, por ejemplo, ". / Last.xsd". La clase de salida se generará con el último nombre de archivo de esquema.