Pergunta

Usando o validador DTD aqui, Sou informado de que o seguinte DTD é inválido.

<!ENTITY % text "(#PCDATA|L)*">
<!ELEMENT H         (%text;)+>
<!ELEMENT L         (#PCDATA)>

A mensagem de erro é: "A '(' (', um tipo de elemento é necessário dentro da declaração do tipo de elemento" H "." Na linha 2, coluna 22.

Alguém pode apontar por que é inválido? E como posso torná -lo válido? A mensagem de erro não é exatamente muito amigável para mim. Obrigado.

Foi útil?

Solução

Você não pode aplicar que um elemento com conteúdo misto deve ter pelo menos um nó filho. Seu DTD se torna

<!ELEMENT H         ((#PCDATA|L)*)+>

Quando a entidade é expandida. O único formulário permitido para elementos com conteúdo misto é

(#PCDATA | A | B | C)*

onde A, B e C são possíveis elementos filhos. #PCDATA devo Seja a primeira opção e o conjunto deve repetir os tempos de 0-infinidade, ou seja, o asterisco é necessário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top