Como construi uma DTD?

3 respostas
U

pessoal eu sei construir uma DTD basica mas o meu problema é o seguinte imaginem o seguinte XML.

<coisas>
<livro>
<name>ssasa</name>
<livro>

&lt;cd&gt;
         &lt;name&gt;&lt;capa&gt;assa&lt;/capa&gt;&lt;/name&gt;
      &lt;cd&gt;

</coisas>

ou seja o elemento name aparece duas vezes. com regras diferentes. como eu valido isso na DTD tipo o primeiro não tem nenhum filho mas o segundo pode ter um filho capa .

entenderam ?

muito obrigado

3 Respostas

renatosilva
<!ELEMENT name (#PCDATA|capa*)>

@adicionado: ps: seu xml está mal formado hehehehe

U

é meu xml esta mal formatado. faltou fechar algumas tags. mas não entendi sua resposta.

como que é ? tipo eu não quero que ele teste se é uma coisa ou outra. porque assim eu posso ter coisas no lugar errado entende. queria ser mas espefico tipo elemento name do cd tem que ter um elemento capa e elemento name de livro não tem nenhum elemento… entendeu ???

obrigado

renatosilva

Entendi o que tu quer, mas ih rapaz, acho que o DTD não faz isso não. Talvez XML Schema faça.

No exemplo que te passei, name de livro E name de cd podem ambos ter um ou mais capa, misturado ou não com texto. Mas você quer restringir mais.

Outra sugestão: mudar o esquema do seu xml, por exemplo:

  1. atributos

<coisas> <livro name="ssasa"/> <cd capa="assa"/> <!-- ou... --> <cd name="assa"/> </coisas>

  1. Muda o name do cd

<coisas> <livro> <name>ssasa</name> <livro> <cd> <cd-name><capa>assa</capa></cd-name> <cd> </coisas>

  1. Tira o name do cd

<coisas> <livro> <name>ssasa</name> <livro> <cd> <capa>assa</capa> <cd> </coisas>

Criado 30 de março de 2005
Ultima resposta 30 de mar. de 2005
Respostas 3
Participantes 2