Como ler as mensagens de erro do tipo *DTD-Error* do stylechecker?

592 views
Skip to first unread message

Gustavo Fonseca

unread,
Sep 27, 2015, 9:05:27 PM9/27/15
to SciELO XML - SciELO Publishing Schema
As mensagens de erro podem ser difíceis de entender, principalmente por
demandarem algum conhecimento na notação utilizada para expressar a gramática
do XML. Recomendo ler sobre EBNF - Extended Backus-Naur Form -, vou deixar links
no final[1][2].

O primeiro passo para entender a notação, é identificar alguns símbolos. Os
principais para a correta interpretação da documentação da JATS e das mensagens
de erro produzidas pelo stylechecker são:

  • ``?``: o símbolo, ou grupo de símbolos entre parênteses, imediatamente anterior é opcional, i.e., ocorre zero ou uma vez.
  • ``*``: o símbolo, ou grupo de símbolos entre parênteses, imediatamente anterior pode ocorrer zero ou mais vezes.
  • ``+``: o símbolo, ou grupo de símbolos entre parênteses, imediatamente anterior pode ocorrer uma ou mais vezes.
  • ``()``: representa um grupo.
  • ``|``: representa o conetivo lógico "OU" exclusivo[4].


Vamos pegar como exemplo a referência para o elemento ``<date>``[3]. A seção
Expanded Content Model diz o seguinte:

    (((day?, month?) | season)?, year)


Para facilitar a visualização, vamos separar as expressões por quebra de linha
e alguma indentação:

    (
        ((day?, month?) | season)?,
        year
    )



Melhorou? Vamos lá.. a regra toda está entre parênteses, o que significa que
trata-se de um grupo. Esse grupo é composto por 2 elementos: 
((day?, month?) | season)? e year, sendo o primeiro opcional (repare
no caractere ``?``) e o segundo obrigatório. Até agora sabemos que o
elemento ``<date>`` é composto minimamente pelo elemento ``<year>``. 

Agora vamos analisar o primeiro elemento:

    ((day?, month?) | season)?


Sabemos que trata-se de um grupo que pode ocorrer zero ou uma vez, composto por
outro grupo que pode conter os elementos ``<day>``, zero ou uma vez, e
``<month>``, também zero ou uma vez, **ou** o elemento ``<season>`` uma vez.


São exemplos válidos:

1.

    <date>
       
<year>1808</year>
   
</date>



2.
   
    <date>
       
<day>22</day>
       
<month>01</month>
       
<year>1808</year>
   
</date>



3.
   
    <date>
       
<season>Jan-Mar</season>
       
<year>1808</year>
   
</date>




Agora vamos pegar uns exemplos de estruturas inválidas para analisarmos as
mensagens de erro:

1. A estrutura abaixo produz a seguinte mensagem: ``"Element date content does not follow the DTD, expecting (((day? , month?) | season)? , year), got (day season year)"``.
   
    <date>
       
<day>22</day>
       
<season>Jan-Mar</season>
       
<year>1808</year>
   
</date>




A mensagem diz que o conteúdo do elemento ``date`` não segue a DTD, pois
espera uma estrutura e recebeu uma diferente. A graça é que ambas as estruturas,
a esperada e a recebida, são exibidas na mensagem de erro usando a notação
que expliquei logo acima. Vou dar mais um exemplo.
   
2. A estrutura produz a seguinte mensagem: ``"Element date content does not follow the DTD, expecting (((day? , month?) | season)? , year), got (month day year)"``.
   
    <date>
       
<month>01</month>
       
<day>22</day>
       
<year>1808</year>
   
</date>




Isso mesmo, a ordem em que os elementos são dispostos é importante. O elemento
``<day>``, quando presente, deve preceder o elemento ``<month>``. Ok, mais um exemplo.

3. A mensagem é: ``"Element date content does not follow the DTD, expecting (((day? , month?) | season)? , year), got (day month year CDATA)"``.

    <date>
       
<month>01</month>
       
<day>22</day>
       
<year>1808</year>
        .
   
</date>




CDATA significa character data, ou seja, um caractere qualquer. No exemplo
acima, o caractere "ponto" está invalidando a estrutura.


Espero ter ajudado.


[1] https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_Form
[2] http://www.garshol.priv.no/download/text/bnf.html
[3] http://jats.nlm.nih.gov/publishing/tag-library/1.0/n-v5a0.html
[4] https://pt.wikipedia.org/wiki/Disjun%C3%A7%C3%A3o_exclusiva

Abraço,
-Gustavo

Rita Maria Xavier Machado

unread,
Sep 28, 2015, 2:06:40 PM9/28/15
to SciELO XML - SciELO Publishing Schema
Ajudou!!! Obrigada!

Rita Machado

Ronaldo

unread,
Aug 13, 2022, 4:21:50 PM8/13/22
to SciELO XML - SciELO Publishing Schema
Lendo algumas dúvidas de validação aqui no fórum,
dou um up no didático post de 2015, do Gustavo Fonseca.
Resolve quase todos os problemas.

Ronaldo Machado

Rita Maria Xavier Machado

unread,
Aug 13, 2022, 7:05:36 PM8/13/22
to sciel...@googlegroups.com

Obrigada por isso, Ronaldo.

Bom domingo!

 

Rita Machado

--
Dicas para uma lista mais agradável: https://groups.google.com/forum/#!msg/scielo-xml/-YrEM7thNiU/23VuComZDwAJ
---
Você recebeu essa mensagem porque está inscrito no grupo "SciELO XML - SciELO Publishing Schema" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para scielo-xml+...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/scielo-xml/5b99a106-2dbe-4070-9fae-95cc83913d7cn%40googlegroups.com.

 

Reply all
Reply to author
Forward
0 new messages