Questão nº 39
Questão de Tecnologia da Informação · CESGRANRIO BASA 02/2021 (nº 39)
Ao desenvolver um sistema de notícias, a empresa X decidiu manter as notícias em um formato XML, como o do exemplo
a seguir:
```xml
<?xml version="1.0"?>
<news>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</news>
```
Mais tarde, entendeu que, para esse formato exemplificado acima, seria melhor definir um esquema em XSD.
Que fragmento de código XSD deve conter esse esquema para permitir que o exemplo apresentado seja validado corre-
tamente, quando nele for incluída a referência ao esquema completo?
- A```xml
<xs:element name="news">
<xs:complexType>
<xs:sequence>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
``` (alternativa correta) - B```xml
<xs:element name="news">
<xs:sequence>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:element>
``` - C```xml
<xs:element name="news">
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:element>
``` - D```
<!ELEMENT news (heading, body)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
``` - E```
<!ELEMENT news (heading, body)>
<!ELEMENT heading (text)>
<!ELEMENT body (text)>
```
Resposta comentada
Gabarito Alternativa A
Conceito-chave: Em XSD, para validar um elemento que contém outros elementos (como <news> que contém <heading> e <body>), é obrigatório declará-lo como <xs:complexType>. Dentro dele, usamos <xs:sequence> para indicar que os filhos devem aparecer na ordem exata definida. Sem o complexType, o XSD não entende que o elemento tem conteúdo estruturado.
- (A) Correta: É o gabarito porque declara
<news>como um tipo complexo, com<xs:sequence>definindo a ordem obrigatória (headingantes debody), ambos do tipoxs:string— exatamente o que o XML de exemplo exige. - (B) Incorreta: A pegadinha: falta o
<xs:complexType>— sem ele, o XSD não permite aninhar<xs:sequence>diretamente dentro de<xs:element>; o esquema seria inválido e não validaria o documento. - (C) Incorreta: Pior ainda: além de faltar
complexType, os elementos filhos estão soltos dentro de<xs:element>, o que é sintaxe inválida em XSD (não há como declarar filhos sem o wrapper de tipo complexo). - (D) Incorreta: Este é um fragmento de DTD (Document Type Definition), não XSD — usa
<!ELEMENT>e(#PCDATA), que são sintaxes de DTD, não de XML Schema. - (E) Incorreta: Também é DTD, e ainda erra o tipo do conteúdo:
(#PCDATA)seria o correto para texto simples, não(text)— que nem é um tipo válido em DTD.
Fonte: CESGRANRIO BASA 02/2021 Técnico Científico - Tecnologia da Informação. Reproduzida para fins de estudo.