如何将wsdl转换为XSD类型格式?

时间:2011-08-10 05:09:50

标签: xsd wsdl

我正在使用wsdl格式的XML,现在我想将其编码更改为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 个答案:

答案 0 :(得分:2)

不是一种简单的方法,但您可以尝试使用wsdl工具(或svcutil用于WCF)生成C#类,然后使用xsd工具从类生成XSD。

答案 1 :(得分:0)

为了解决这个问题,我使用了一个带有以下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文件中。