Чтобы перефразировать ваш вопрос, как я понял, вы в основном спрашиваете, как сделать так, чтобы ваш сгенерированный файл XSD указывал на реальное определение элемента app1:GetSystemDateAndTime
вместо GetSystemDateAndTime_app1.xsd
;проблема заключается в определении app1: GetSystemDateAndTime находится в пределахэлемент внутрифайла WSDL, расположенного по адресу http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl.
Если вы ограничиваете свои параметры только сгенерированным XSD и загруженным WSDL, краткий ответ - нет, вы не можете иметь ссылочный контент XSD из другого XSD, определенноговнутри файла WSDL.
Непонятно, почему бы вам не использовать встроенный инструментарий VS (Service Reference или Web Reference, если вы используете старую версию) или svcutil.exe для генерации клиентского кода.Очень необычно связывать код из XSD, обращенного к XML-конверту SOAP.Тем не менее, SOAP if XML возможно;Я просто никогда не видел этого раньше ...
Если вы все еще хотите «присоединиться» и хотите внести некоторые изменения вручную, то вы можете сделать это двумя способами.
Долгий путьзагрузить все файлы (WSDL + XSD).Из командной строки вы можете использовать svcutil следующим образом:
svcutil /t:metadata /directory:d:\temp\11 http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl
Он выведет примерно так:
Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, Version 4.0.30319.1]
Copyright (c) Microsoft Corporation. All rights reserved.
Attempting to download metadata from 'http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl' using WS-Metadata Exchange or DISCO.
Saving downloaded metadata files...
d:\temp\11\www.onvif.org.ver10.schema.xsd
d:\temp\11\www.w3.org.2004.08.xop.include.xsd
d:\temp\11\www.w3.org.XML.1998.namespace.xsd
d:\temp\11\www.onvif.org.ver10.device.wsdl
d:\temp\11\www.w3.org.2005.08.addressing.xsd
d:\temp\11\docs.oasis-open.org.wsrf.bf-2.xsd
d:\temp\11\www.w3.org.2005.05.xmlmime.xsd
d:\temp\11\docs.oasis-open.org.wsn.t-1.xsd
d:\temp\11\docs.oasis-open.org.wsn.b-2.xsd
Из файла WSDL вручную извлеките содержимое XSD в файлdevicemgmtwsdl.xsd, в той же папке;отредактируйте и сопоставьте импортируемые файлы во всех файлах, чтобы они совпадали с именами файлов XSD после загрузкиОбратитесь к devicemgmt.wsdl вместо GetSystemDateAndTime_app1.xsd, и все готово.
В качестве альтернативы, с помощью инструмента рефакторинга XSD, вы можете использовать простой мастер импорта файлов схемы XML: наведите его на файл WSDL,укажите папку и нажмите ОК.Файлы будут там для вас, чтобы ссылаться на них, как вам нравится.