Ошибка svcutil: 'SchemaLocation' должен успешно разрешиться, если <redefine> содержит какой-либо дочерний элемент, кроме <annotation>

Я хочу создать прокси-класс (C#) из WSDL и некоторых файлов XSD. Файлы wsdl и xsd находятся в одной папке на моем диске. Команда, которую я выдаю:

svcutil.exe AuthenticateAndGetAssertionsSOAP12v2.wsdl .xsd / t: code / l: cs /o:AuthAndGetAssertionsProxy.cs / n:, TestNamespace

но прокси-класс не генерируется, и я получаю эту ошибку:

SchemaLocation должен успешно разрешить, если содержит какой-либо дочерний элемент, кроме -annotation-.

svcutil также заявляет, что идентификатор документа с проблемами: http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd.

Один из файлов xsd эффективно переопределяет complexType, определенный в этом пространстве имен, следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <xs:redefine schemaLocation="oasis-200401-wss-wssecurity-secext-1.0.xsd">
        <xs:complexType name="UsernameTokenType">
            <xs:complexContent>
                <xs:extension base="UsernameTokenType">
                    <xs:sequence>
                        <xs:element name="NewPassword" type="xs:base64Binary"/>
                    </xs:sequence>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:redefine>
</xs:schema>

Я попытался полностью определить URI schemaLocation следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
       <xs:redefine schemaLocation="file:///C:/AuthAndGetAssertionsSOAP12v2/oasis-200401-wss-wssecurity-secext-1.0.xsd">    
       <xs:complexType name="UsernameTokenType">
            <xs:complexContent>
                <xs:extension base="UsernameTokenType">
                    <xs:sequence>
                        <xs:element name="NewPassword" type="xs:base64Binary"/>
                    </xs:sequence>
                </xs:extension>
            </xs:complexContent>
        </xs:complexType>
    </xs:redefine>
</xs:schema>

где C:\AuthAndGetAssertionsSOAP12v2 - это фактический путь к файлам wsdl и xsd, но все же я не могу заставить его работать.

Для справки, вот как complexType UsernameTokenType определяется в oasis-200401-wss-wssecurity-secext-1.0.xsd:

<xsd:complexType name="UsernameTokenType">
        <xsd:annotation>
            <xsd:documentation>This type represents a username token per Section 4.1</xsd:documentation>
        </xsd:annotation>
        <xsd:sequence>
            <xsd:element name="Username" type="wsse:AttributedString"/>
            <xsd:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute ref="wsu:Id"/>
        <xsd:anyAttribute namespace="##other" processContents="lax"/>
    </xsd:complexType>

Я много искал, но не мог найти решение, но после прочтения этого поста

Ошибка svcUtil 'SchemaLocation' должна быть успешно устранена, если содержит какой-либо дочерний элемент, кроме ;

Я начинаю думать, что проблема может быть в другом месте в WSDL. Какие-либо предложения?

0 ответов

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