为什么我在webservice中的元素'element'中获得'type'的无效属性值?

时间:2013-04-01 22:57:03

标签: web-services xsd

我正在签订合同第一个webservice,所以我的第一个xds(MensajeDetails.xds)是:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://webservices.samples.blog.com" targetNamespace="http://webservices.samples.blog.com" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="Mensaje" type="Mensaje"/>
    <xs:complexType name="Mensaje">
        <xs:sequence>
            <xs:element name="IdMensajesEnviados" type="xs:long"/>
            <xs:element name="CodigoEstatus" type="xs:int"/>
            <xs:element name="DescripcionEstatus" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

在我的第二个xds(MensajeDetailsS​​erviceOperation.xds)中我已经:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://com/blog/samples/webservices/mensajeservice" xmlns:account="http://webservices.samples.blog.com" targetNamespace="http://com/blog/samples/webservices/mensajeservice" elementFormDefault="qualified">
    <xsd:import namespace="http://webservices.samples.blog.com" schemaLocation="MensajeDetails.xsd"/>
    <xsd:element name="MensajeDetailsRequest">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="IdUsuario" type="xsd:long"/>
                <xsd:element name="Token" type="xsd:string"/>
                <xsd:element name="IdServicio" type="xsd:int"/>
                <xsd:element name="Archivo" type="xsd:byte"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="MensajeDetailsResponse">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="MensajeDetails" type="mensaje:Mensaje"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

所以eclipse告诉我在我的第二个xds

s4s-att-invalid-value: Invalid attribute value for 'type' in element 'element'.
    Recorded reason: UndeclaredPrefix: Cannot resolve 'mensaje:Mensaje' as a QName: the prefix 'mensaje' is not declared." in the line:
    <xsd:element name="MensajeDetails" type="mensaje:Mensaje"/>

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您已将命名空间导入到架构中并为其声明了命名空间前缀,在架构声明中您有xmlns:account="http://webservices.samples.blog.com",这会将前缀“account”绑定到导入的命名空间。

因此,要么将您的元素更改为account:Mensaje,要么将前缀更改为mensaje

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns="http://com/blog/samples/webservices/mensajeservice"
  xmlns:mensaje="http://webservices.samples.blog.com"
  targetNamespace="http://com/blog/samples/webservices/mensajeservice"
  elementFormDefault="qualified">