El atributo ‘minOccurs’ no puede estar presente

Estoy en el proceso de construir mi línea de comandos svcutil para generar objetos comerciales a partir del esquema OSEO .

Cuando me dice que falta el tipo “xxx”, determino qué xsd necesito incluir en la línea de comando y lo agrego. Hasta ahora mi línea de comando se ve así:

svcutil /language:C# /namespace:*,OGC.OSEO.DataContract /out:IOSEO.cs oseo/1.0/oseo.wsdl oseo/1.0/oseo.xsd ows/2.0/owsAll.xsd ows/2.0/ows19115subset.xsd ows/2.0/owsAdditionalParameters.xsd ows/2.0/owsCommon.xsd ows/2.0/owsContents.xsd ows/2.0/owsDataIdentification.xsd ows/2.0/owsExceptionReport.xsd ows/2.0/owsGetCapabilities.xsd ows/2.0/owsGetResourceByID.xsd ows/2.0/owsInputOutputData.xsd ows/2.0/owsManifest.xsd ows/2.0/owsOperationsMetadata.xsd ows/2.0/owsServiceIdentification.xsd ows/2.0/owsServiceProvider.xsd ows/2.0/owsDomainType.xsd http://www.w3.org/2006/03/addressing/ws-addr.xsd sweCommon/2.0/block_components.xsd sweCommon/2.0/advanced_encodings.xsd sweCommon/2.0/basic_types.xsd sweCommon/2.0/choice_components.xsd sweCommon/2.0/record_components.xsd sweCommon/2.0/simple_components.xsd sweCommon/2.0/simple_encodings.xsd sweCommon/2.0/swe.xsd xlink/1.0.0/xlinks.xsd swes/2.0/swes.xsd swes/2.0/swesCommon.xsd swes/2.0/swesContents.xsd swes/2.0/swesDeleteSensor.xsd swes/2.0/swesDescribeSensor.xsd swes/2.0/swesInsertSensor.xsd swes/2.0/swesNotification.xsd swes/2.0/swesUpdateSensorDescription.xsd gml/3.2.1/basicTypes.xsd gml/3.2.1/coordinateOperations.xsd gml/3.2.1/coordinateReferenceSystems.xsd gml/3.2.1/coordinateSystems.xsd gml/3.2.1/coverage.xsd gml/3.2.1/datums.xsd gml/3.2.1/defaultStyle.xsd gml/3.2.1/deprecatedTypes.xsd gml/3.2.1/dictionary.xsd gml/3.2.1/direction.xsd gml/3.2.1/dynamicFeature.xsd gml/3.2.1/feature.xsd gml/3.2.1/geometryAggregates.xsd gml/3.2.1/geometryBasic0d1d.xsd gml/3.2.1/geometryBasic2d.xsd gml/3.2.1/geometryComplexes.xsd gml/3.2.1/geometryPrimitives.xsd gml/3.2.1/gml.xsd gml/3.2.1/gmlBase.xsd gml/3.2.1/grids.xsd gml/3.2.1/measures.xsd gml/3.2.1/observation.xsd gml/3.2.1/referenceSystems.xsd gml/3.2.1/temporal.xsd gml/3.2.1/temporalReferenceSystems.xsd gml/3.2.1/temporalTopology.xsd gml/3.2.1/topology.xsd gml/3.2.1/units.xsd gml/3.2.1/valueObjects.xsd gmd/applicationSchema.xsd gmd/citation.xsd gmd/constraints.xsd gmd/content.xsd gmd/dataQuality.xsd gmd/distribution.xsd gmd/extent.xsd gmd/freeText.xsd gmd/gmd.xsd gmd/identification.xsd gmd/maintenance.xsd gmd/metadataApplication.xsd gmd/metadataEntity.xsd gmd/metadataExtension.xsd gmd/portrayalCatalogue.xsd gmd/referenceSystem.xsd gmd/spatialRepresentation.xsd gco/basicTypes.xsd gco/gcoBase.xsd gts/temporalObjects.xsd gss/geometry.xsd gsr/spatialReferencing.xsd smil20/smil20-animate.xsd smil20/smil20-animate.xsd smil20/smil20-language.xsd 

Así que he topado con un tocón en el último xsd para agregar a la línea de comando que es el smil20-language.xsd

Me aparece el siguiente error:

El atributo ‘minOccurs’ no puede estar presente

Como puede ver en el xsd, hay muchos ‘minOccurs’.

Entonces mi pregunta es: ¿Cuáles están causando estos errores? ¿Cómo me entero?

El error en su totalidad no da un número de línea, código o ninguna pista en absoluto.

enter image description here

El conjunto de esquemas XML que está compuesto por todos los archivos que se pueden rastrear desde el enlace de esquema de OSEO que ha proporcionado, es válido. Las herramientas, desafortunadamente, no parecen ser capaces de lidiar solo con ese archivo; lo que hace que todo el proceso sea engorroso, ya que hay 104 archivos en total … con inclusiones / importaciones muy complejas.

Fuera de la caja OSEO

Describiré lo que pude hacer para que funcione, utilizando la herramienta disponible para mí (y con la que estoy asociado). No podré proporcionar explicaciones sobre por qué xsd.exe o svcutil.exe se comportan de la manera en que lo hacen; de seguro, lo más interesante podría ser revertirlos …

Importé todos los archivos XSD en mi máquina local. Usé la herramienta; conserva el diseño y reescribe automáticamente el atributo schemaLocation de s / para mantener la integridad de la descarga.

Refactoreé todo el conjunto para obtener el equivalente, pero usando la menor cantidad posible de archivos XSD.

Conjunto mínimo refactorizado de OSOE

Usando los archivos generados, ejecuté la siguiente línea de comando xsd.exe; la clase C # salió limpia, sin errores ni advertencias en la salida.

 xsd oseo.xsd gco.xsd gmd.xsd gml.xsd gsr.xsd gss.xsd gts.xsd ows-1-1.xsd ows-2-0.xsd swe.xsd swes.xsd ws-addr.xsd wsn.xsd xlinks.xsd xml.xsd /c 

Probar el mismo conjunto con svcutil no funcionará; se queja de que el esquema no es válido … Lamentablemente, no tuve tiempo de analizarlo.

Toda la solución y las instrucciones específicas de la herramienta se encuentran en el archivo zip disponible en este enlace . si desea chatear fuera de este hilo, solo envíeme un correo electrónico a través de la dirección de soporte publicada en el sitio web. Mantuve el PDF realmente pequeño, centrado en explicar cómo probar solo. El zip contiene los XSD descargados, así como los XSD generados. Espero eso ayude…