Разница между именованным сложным типом и анонимным сложным типом в элементе

В чем разница между...

<xsd:element name=”add”>
<xsd:complexType>
    <xsd:sequence>
        <xsd:element name="x" type="xsd:float"/>
        <xsd:element name="y" type="xsd:float"/>
    </xsd:sequence>
</xsd:complexType>
</xsd:element>

а также...

<xsd:complexType name=”add”>
    <xsd:sequence>
        <xsd:element name="x" type="xsd:float"/>
        <xsd:element name="y" type="xsd:float"/>
    </xsd:sequence>
</xsd:complexType>

Оба будут отображаться как:

<add>
    <x type="xsd:float">1.00</x>
    <y type="xsd:float">2.00</x>
</add>

В конверте SOAP... так есть ли определенная разница между этими двумя определениями?


person Toby    schedule 31.08.2011    source источник
comment
Во втором фрагменте схемы отсутствует определение элемента? Вы не можете получить пример экземпляра документа из второго фрагмента.   -  person forty-two    schedule 31.08.2011


Ответы (2)


Привет, вы должны использовать тип элемента, если этот документ отображается как корневой элемент в вашем конверте SOAP, а тип complexType не может отображаться как корневой элемент, который обычно отображается в дочерних элементах/не в корневом элементе.

person NoodleX    schedule 31.08.2011
comment
Теперь, когда вы сказали, что я помню, как читал это в спецификации, спасибо =) - person Toby; 31.08.2011
comment
При этом я сейчас смотрю на действительный WSDL со сложными типами, определенными с атрибутом имени, а не с дочерними элементами элемента, непосредственно под ‹schema› - person Toby; 31.08.2011

Определение элемента, который ссылается на именованный сложный тип по имени, имеет точно такой же эффект, как включение сложного типа в строку объявления элемента, за исключением того, что именованный сложный тип можно повторно использовать, например, в разных объявлениях элементов или в других сложных типы, полученные путем ограничения или расширения.

person Michael Kay    schedule 31.08.2011