Атрибут 'minOccurs' не может присутствовать

Я нахожусь в процессе создания моей командной строки svcutil для генерации бизнес-объектов из схемы OSEO.

Всякий раз, когда он говорит мне, что тип "xxx" отсутствует, я определяю, что xsd мне нужно включить в командную строку, и добавляю его. Пока моя командная строка выглядит так:

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

Итак, я нажал на пень в последнем xsd для добавления в командную строку, который является smil20-language.xsd

Я получаю следующую ошибку:

Атрибут 'minOccurs' не может присутствовать

Как вы можете видеть из xsd, существует много minOccurs.

Итак, мой вопрос: какие из них вызывают эти ошибки? Как я узнаю?

Ошибка полностью не дает номера строки, кода или каких-либо подсказок.

1 ответ

Решение

Набор XML-схемы, состоящий из всех файлов, которые можно отследить по предоставленной вами ссылке на схему OSEO, является действительным. Инструменты, к сожалению, не в состоянии справиться только с этим одним файлом; что делает весь процесс громоздким, поскольку всего 104 файла... с очень сложным включением / импортом.

Из коробки OSEO

Я опишу, что я смог сделать, чтобы заставить его работать, используя инструмент, доступный мне (и с которым я связан). Я не смогу объяснить, почему xsd.exe или svcutil.exe ведут себя так же, как они; наверняка, самое интересное может быть перепроектировать их...

Я импортировал все файлы XSD на моем локальном компьютере. Я использовал инструмент; он сохраняет макет и автоматически переписывает атрибут s /s schemaLocation, чтобы сохранить целостность загрузки.

Я произвел рефакторинг всего набора, чтобы получить эквивалент, но используя минимально возможное количество файлов XSD.

OSOE рефакторинг минимальный набор

Используя сгенерированные файлы, я запустил следующую командную строку xsd.exe; класс C# вышел чистым, без ошибок или предупреждений в выводе.

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

Попытка того же набора с svcutil не будет работать; он жалуется на то, что схема недействительна... К сожалению, у меня не было времени изучить ее.

Полные инструкции по решению и инструменту находятся в zip-файле, доступном по этой ссылке. Если вы хотите пообщаться вне этой темы, просто отправьте мне письмо по электронной почте через адрес поддержки, размещенный на сайте. Я держал PDF очень маленьким, сосредоточившись на объяснении, как тестировать только. В архиве содержатся загруженные XSD, а также сгенерированные XSD. Надеюсь, поможет...

Другие вопросы по тегам