Xsd - xml

8 respostas
E

Qual a diferença entre xsd:complexType/ e xsd:element/?

obrigado

8 Respostas

JoaoBluSCBR

Bem, acho que os nomes já falam tudo.

Um element, é isso e apenas isso, um elemento, único e com atributos:

<xs:element name="Codigo" type="tipos:tpCodigoEvento" minOccurs="1" maxOccurs="1"> <xs:annotation> <xs:documentation>Código do evento.</xs:documentation> </xs:annotation> </xs:element>

Já um complexType é uma sequencia de Elements

<xs:complexType name="tpEvento">
    <xs:sequence>
      <xs:element name="Codigo" type="tipos:tpCodigoEvento" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Código do evento.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Descricao" type="tipos:tpDescricaoEvento" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Descrição do enveto.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice minOccurs ="0" maxOccurs ="1">
        <xs:annotation>
          <xs:documentation>Chave para identificação da origem do evento.</xs:documentation>
        </xs:annotation>
        <xs:element name="ChaveRPS" type="tipos:tpChaveRPS" minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Chave do RPS.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="ChaveNFe" type="tipos:tpChaveNFe" minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Chave da NFe.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
E

É isso eu observei no xml…

mais só o complexType que gera a classe né?:
se sim…

para que criar o element sozinho?

E

^^ Alguem?

P

Use o schemagem para gerar o XSD

http://www.guj.com.br/java/107734-gerar-xsd-a-partir-de-classe-java

E

minha dúvida não é essa =S

JoaoBluSCBR

Uma classe é um ComplexType

Então ela só pode ser gerada a partir de um.

Só uma classe tão simples que só tivesse um atributo podeira ser um Element.
E daí não justificaria o uso de uma classe, bastaria que esse Element fosse
parte de outra classe com um atributo dela.

Deixa eu explicar melhor. Filosoficamente uma classe chamada

Carro e que só tenha um atributo nrPortas não faz sentido, certo?

Para que ter o trabalho de criar uma classe se em qualquer lugar bastaria
a informação nrPortas como variavel.

Então sim, classes são por conseguinte, ComplexTypes e só são gerados
a partir deles.

JoaoBluSCBR

Ah, o Element sozinho serve apenas para isolar Elementos isolados dentro de um complexType.

Imagine que você está fazendo xml de informacoes cadastrais de pessoas.

O nome é um element, o endereço (Rua, numero, bairro, cidade, estado) , é um complexType dentro do complexType total da classe, e cheio de Element isolados.
o cpf é outro element sozinho dentro do ComplexType pessoa.

Espero ter explicado .

E

mais o Element não gera classe né?
ele é um “atributo” para ser usado dentro do complexType

Criado 15 de agosto de 2011
Ultima resposta 16 de ago. de 2011
Respostas 8
Participantes 3