FC ConcursosFC Concursos

Questão FC373490

Considere o código XML abaixo. < ?xml version="1.0" standalone="yes"? > < ! DOCTYPE equipe [ < ! ELEMENT equipe (nome_funcionario)* > < ! ELEMENT nome_funcionario (#PCDATA) > < ! A

Desenvolvimento Web

FCC · 2019

Considere o código XML abaixo.

 

     < ?xml version="1.0" standalone="yes"? >

     < ! DOCTYPE equipe [

         < ! ELEMENT equipe (nome_funcionario)* >

         < ! ELEMENT nome_funcionario (#PCDATA) >

         < ! ATTLIST nome_funcionario num_funcionario ID #REQUIRED >

         < ! ATTLIST nome_funcionario lider IDREF #IMPLIED >

     ] >

 

<equipe>

     <nome_funcionario num_funcionario="a8904885" >Marcelo< /nome_funcionario>

     <nome_funcionario num_funcionario="a9011133" >Andrea< /nome_funcionario>

     <nome_funcionario num_funcionario="a9216735"

          lider="a9211135">João</nome_funcionario>

</equipe>

 

O código não está bem formatado e NÃO é válido porque

  1. o atributo lider do funcionário João não contém um número de funcionário válido, pois este deve aparecer em um dos atributos num_funcionario nas linhas anteriores.
  2. o elemento nome_funcionario não pode ser do tipo #PCDATA, mas sim do tipo #STRING ou #TEXT.
  3. o atributo lider referenciado como IDREF não pode ser #IMPLIED, mas sim #REQUIRED.
  4. o elemento nome_funcionario não pode ter mais de um atributo, ou seja, ou se utiliza o atributo num_funcionario ou o atributo lider.
  5. para que o elemento equipe suporte vários elementos nome_funcionario o asterisco (*) da linha <!ELEMENT equipe (nome_funcionario)*> deve ser substituído pelo sinal de adição (+).
Mostrar resposta e comentário

Gabarito

A

Comentário do professor

O DTD declara o atributo num_funcionario como do tipo ID (único e obrigatório) e o atributo lider como IDREF (referência a um ID existente).

Isto significa que, se um elemento possui lider="valor", esse valor deve coincidir exatamente com algum num_funcionario="valor" presente no mesmo documento XML.

No exemplo, o funcionário João tem lider="a9211135", mas não existe nenhum num_funcionario com esse valor (os outros são, por exemplo, a8904885 e a9011133). Portanto a referência IDREF aponta para um ID inexistente, quebrando a validação contra a DTD.

Conclusão: o documento não é válido porque a referência do atributo lider não corresponde a nenhum num_funcionario definido.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo