Как я могу конвертировать WSDL в формат типа XSD? - PullRequest
2 голосов
/ 10 августа 2011

У меня XML в формате wsdl, теперь я хочу изменить его кодировку на формат XSD. Нужно ли мне внести некоторые изменения в веб-конфигурацию, или что мне нужно сделать, пожалуйста, предложите мне. ниже приведен пример

<wsdl:definitions name="LoginCheck"
                  targetNamespace="http://tempuri.org/">
    <wsdl:types>
        <xsd:schema targetNamespace="http://tempuri.org/Imports">
            <xsd:import schemaLocation="http://192.168.0.6:8000/LoginCheck.svc?xsd=xsd0"
                        namespace="http://tempuri.org/"/>
            <xsd:import schemaLocation="http://192.168.0.6:8000/LoginCheck.svc?xsd=xsd1"
                        namespace="http://schemas.microsoft.com/2003/10/Serialization/"/>

и я хочу преобразовать его в формат, как показано ниже

<definitions targetNamespace="urn:saveCharacterAcc">
    <types>
        <xsd:schema targetNamespace="urn:saveCharacterAcc">
            <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
            <xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
            <xsd:complexType name="Character">
                <xsd:all>
                    <xsd:element name="characterNumber"
                                 type="xsd:int"/>
                    <xsd:element name="byteArray"
                                 type="xsd:string"/>
                    <xsd:element name="rotationAngle"
                                 type="xsd:string"/>
                    <xsd:element name="charX" type="xsd:string"/>

Ответы [ 2 ]

2 голосов
/ 10 августа 2011

Не простой способ, но вы можете попробовать использовать инструмент wsdl (или svcutil для WCF) для генерации классов C #, а затем инструмент xsd для генерацииваш XSD из классов.

0 голосов
/ 13 января 2014

Чтобы решить эту проблему, я использовал XSL-преобразователь со следующим XSL-кодом.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
        version="1.0">
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="wsdl:types">
        <xsl:copy-of select="xs:schema"/>
    </xsl:template>
    <xsl:template match="wsdl:documentation/text()"/>
</xsl:stylesheet>

Тег <xsl:template match="wsdl:documentation/text()"/> использовался для удаления некоторых нежелательных текстовых элементов, которые появились в моем XSD-файле.

...