Questão nº 52
Questão de Tecnologia da Informação · CESGRANRIO BASA 01/2024 (nº 52)
Um grande banco estabeleceu um novo canal de comunicação com os clientes via um app de mensagens instantâneas para smartphone. Esse app irá interagir com um software de resposta automática já existente por mensagens em XML.
Cada mensagem enviada ao software já existente terá o formato do seguinte exemplo:
```xml
<MENSAGEM>
<NOME>Nome do Cliente</NOME>
<AGENCIA>9999-9</AGENCIA>
<CONTA>9999-9</CONTA>
<CPF>999.999.999-99</CPF>
<TEXTO>Esse é um exemplo de mensagem</TEXTO>
</MENSAGEM>
```
Qual esquema XSD define corretamente a estrutura dessa mensagem?
- A```xml
<!ELEMENT MENSAGEM (NOME, AGENCIA, CONTA, CPF, TEXTO)>
<!ELEMENT NOME (#PCDATA)>
<!ELEMENT AGENCIA (#PCDATA)>
<!ELEMENT CONTA (#PCDATA)>
<!ELEMENT CPF (#PCDATA)>
<!ELEMENT TEXTO (#PCDATA)>
``` - B```xml
<!DOCTYPE MENSAGEM [
<!ELEMENT MENSAGEM (NOME, AGENCIA, CONTA, CPF, TEXTO)>
<!ELEMENT NOME (#PCDATA)>
<!ELEMENT AGENCIA (#PCDATA)>
<!ELEMENT CONTA (#PCDATA)>
<!ELEMENT CPF (#PCDATA)>
<!ELEMENT TEXTO (#PCDATA)>
]>
``` - C```xml
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="MENSAGEM">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NOME" type="xsd:string"/>
<xsd:element name="AGENCIA" type="xsd:string"/>
<xsd:element name="CONTA" type="xsd:string"/>
<xsd:element name="CPF" type="xsd:string"/>
<xsd:element name="TEXTO" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
``` (alternativa correta) - D```xml
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="MENSAGEM">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="NOME" type="xsd:string"/>
<xsd:element name="AGENCIA" type="xsd:integer"/>
<xsd:element name="CONTA" type="xsd:integer"/>
<xsd:element name="CPF" type="xsd:integer"/>
<xsd:element name="TEXTO" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
``` - E```xml
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="MENSAGEM">
<xsd:sequence>
<xsd:element name="NOME" type="xsd:string"/>
<xsd:element name="AGENCIA" type="xsd:integer"/>
<xsd:element name="CONTA" type="xsd:integer"/>
<xsd:element name="CPF" type="xsd:integer"/>
<xsd:element name="TEXTO" type="xsd:string"/>
</xsd:sequence>
</xsd:element>
</xsd:schema>
```
Resposta comentada
Gabarito Alternativa C
Conceito-chave: XSD (XML Schema Definition) é a forma padrão de definir a estrutura de um documento XML, usando tags como <xsd:element> e <xsd:complexType>. Diferente do DTD (que usa uma sintaxe antiga e separada), o XSD é escrito em XML e permite especificar tipos de dados (como string ou integer).
- (A) Incorreta: Esta é a sintaxe de um DTD (Document Type Definition), não de um XSD. Faltam as tags
<xsd:schema>,<xsd:complexType>e<xsd:sequence>, que são obrigatórias em um esquema XSD. - (B) Incorreta: Também é um DTD, mas envolvido em um
<!DOCTYPE>(que é usado para declarações internas em um documento XML, não para definir um esquema XSD). A banca usa isso como distrator para quem confunde DTD com XSD. - (C) Correta: Este é o XSD correto. Define o elemento raiz
MENSAGEMcomo umcomplexType(porque contém elementos filhos), usa<xsd:sequence>para indicar que os elementos devem aparecer na ordem exata, e declara todos os 5 elementos comoxsd:string(texto), que é o tipo adequado para dados como agência, conta e CPF (que contêm hífens e pontos, não são números puros). - (D) Incorreta: A armadilha aqui é o tipo
xsd:integerparaAGENCIA,CONTAeCPF. Esses campos contêm caracteres como-e.(ex: "9999-9", "999.999.999-99"), que não são válidos como inteiros. A banca tenta induzir ao erro de achar que "número" =integer, mas o correto éstring. - (E) Incorreta: Além de usar
xsd:integerincorretamente (mesmo erro da D), falta o<xsd:complexType>dentro do elementoMENSAGEM. Sem ele, o XSD é inválido, pois um elemento com filhos deve ser declarado como complexType.
Fonte: CESGRANRIO BASA 01/2024 Técnico Científico - Área de Formação: Tecnologia da Informação (Caderno Prova B). Reproduzida para fins de estudo.