Questão nº 44
Questão de Engenharia de Software · FCC TST 2017 (nº 44)
A estrutura de um documento XML é considerada válida e bem formatada se possui uma descrição correta em XML Schema ou Document Type Definition − DTD. Assim, o elemento XML `<idade>36</idade>` poderá ser descrito em um DTD e em um XML Schema, respectivamente, como
- A`<!ATTLIST idade (#PCDATA)>` e `<xml:definition name="idade" type="xml:integer"/>`
- B`<!ENTITY idade (#NUMBER)>` e `<xml:entity id="idade" type="xml:integer"/>`
- C`<!ELEMENT idade (#PCDATA)>` e `<xs:element name="idade" type="xs:integer"/>` (alternativa correta)
- D`<!ELEMENT idade (#INTEGER)>` e `<xml:element id="idade" type="xml:integer"/>`
- E`<!ENTITY idade (#PCDATA)>` e `<xs:entity name="idade" type="xs:string"/>`
Resposta comentada
Gabarito Alternativa C
Um DTD (Document Type Definition) e um XML Schema são linguagens usadas para definir a estrutura e o conteúdo válidos de um documento XML. Enquanto o DTD usa uma sintaxe não-XML mais simples e com tipagem de dados limitada, o XML Schema é baseado em XML e oferece um sistema de tipos de dados muito mais rico e complexo.
- (A) Incorreta: No DTD,
<!ATTLIST ...>é usado para definir atributos de elementos, não os próprios elementos. No XML Schema,xml:definitionexml:integernão são as palavras-chave padrão; o prefixo correto para elementos e tipos do Schema é geralmentexs:. - (B) Incorreta: No DTD,
<!ENTITY ...>é usado para definir entidades (como atalhos para texto ou caracteres especiais), não elementos.#NUMBERnão é um tipo de conteúdo válido para elementos em DTD. No XML Schema,xml:entitynão é a sintaxe correta para definir um elemento. - (C) Correta: No DTD,
<!ELEMENT idade (#PCDATA)>define que o elemento<idade>pode conter "Parsed Character Data" (dados de caracteres analisados), que é o que36representa. No XML Schema,<xs:element name="idade" type="xs:integer"/>define que o elemento<idade>tem o tipo de dado inteiro (xs:integer), o que é apropriado para o valor36. - (D) Incorreta: No DTD,
#INTEGERnão é um tipo de conteúdo válido para elementos; o DTD usa#PCDATApara qualquer conteúdo textual. Essa é a armadilha mais comum, pois#INTEGERparece intuitivo, mas DTDs não têm essa granularidade de tipo para o conteúdo de elementos. No XML Schema,xml:elementexml:integernão são as palavras-chave padrão; o prefixo correto éxs:. - (E) Incorreta: No DTD,
<!ENTITY ...>é para entidades, não elementos. No XML Schema,xs:entitynão é para definir elementos. Emboratype="xs:string"seja um tipo válido,xs:integeré mais específico e correto para o valor36.
Fonte: FCC TST 2017 Analista Judiciário - Análise de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.