Descrição do problema
packtools/sps/validation/related_articles.py valida @related-article-type contra listas fixas e globais
(ALLOWED_RELATED_ARTICLE_TYPES/ALLOWED_EXT_LINK_TYPES), sem condicionar o valor esperado ao @article-type
do próprio documento nem ao papel que ele desempenha na relação (documento original, carta, resposta,
comentário). Isso faz com que combinações previstas e documentadas pelo SPS sejam rejeitadas.
O SPS 1.10 documenta explicitamente, nas seções "Carta" e "Comentário", a seguinte matriz de relações válidas
(com exemplos de XML completos para cada caso):
Documento (@article-type) |
<related-article related-article-type="..."> aponta para |
| article (documento original mencionado por uma carta) |
"letter" |
| letter |
"article" (documento comentado) e, se houver resposta, também "reply" |
| reply |
"letter" |
| article-commentary |
"commentary-article" (documento comentado) e, se houver resposta, também "reply" |
O próprio SPS confirma que a mesma lógica se aplica a Comentário/Resposta: "A mesma lógica de relações deve
ser considerada para documentos do tipo comentário".
Cenários reais reportados em scieloorg/spsvalidator#55 mostram erro para:
- Uma carta (
@article-type="letter") com <related-article related-article-type="article"> apontando para o
artigo comentado.
- A mesma carta com um segundo
<related-article related-article-type="reply"> apontando para a resposta.
- O documento original com
<related-article related-article-type="letter"> apontando para a carta que o
menciona.
O caso reply -> "letter" já é aceito corretamente hoje, segundo o relato original; os demais falham.
Comportamento esperado
Tornar a validação de @related-article-type ciente do contexto: validar o valor esperado em função do
@article-type do documento atual (article/letter/reply/article-commentary), não apenas contra uma lista fixa
e global de valores permitidos.
Anexos
Trechos citados a partir do arquivo SPS 1.10_pt.pdf (versão 1.10, última atualização em 22/05/2025), seções
"Carta" (XML da Carta, XML da Carta com Resposta, XML do Documento Mencionado pela Carta, XML da Resposta para
uma Carta) e "Comentário" (estrutura análoga).
Classificação (esforço / risco / relevância)
- Esforço: Alto - requer uma matriz de combinações válidas condicionada tanto ao
@article-type do
documento atual quanto ao @related-article-type declarado, substituindo a checagem atual contra uma lista
global única.
- Risco: Alto -
test_related_articles.py é o maior arquivo de teste do lote (1774 linhas), sinal de que
há muitos cenários de @article-type/@related-article-type já cobertos que podem regredir com uma mudança
na lógica de validação.
- Relevância: Alta - bloqueia integralmente o fluxo de publicação de Carta, Resposta e Comentário como
documentos SPS-válidos.
Referências
Descrição do problema
packtools/sps/validation/related_articles.pyvalida@related-article-typecontra listas fixas e globais(
ALLOWED_RELATED_ARTICLE_TYPES/ALLOWED_EXT_LINK_TYPES), sem condicionar o valor esperado ao@article-typedo próprio documento nem ao papel que ele desempenha na relação (documento original, carta, resposta,
comentário). Isso faz com que combinações previstas e documentadas pelo SPS sejam rejeitadas.
O SPS 1.10 documenta explicitamente, nas seções "Carta" e "Comentário", a seguinte matriz de relações válidas
(com exemplos de XML completos para cada caso):
@article-type)<related-article related-article-type="...">aponta para"letter""article"(documento comentado) e, se houver resposta, também"reply""letter""commentary-article"(documento comentado) e, se houver resposta, também"reply"O próprio SPS confirma que a mesma lógica se aplica a Comentário/Resposta: "A mesma lógica de relações deve
ser considerada para documentos do tipo comentário".
Cenários reais reportados em scieloorg/spsvalidator#55 mostram erro para:
@article-type="letter") com<related-article related-article-type="article">apontando para oartigo comentado.
<related-article related-article-type="reply">apontando para a resposta.<related-article related-article-type="letter">apontando para a carta que omenciona.
O caso
reply -> "letter"já é aceito corretamente hoje, segundo o relato original; os demais falham.Comportamento esperado
Tornar a validação de
@related-article-typeciente do contexto: validar o valor esperado em função do@article-typedo documento atual (article/letter/reply/article-commentary), não apenas contra uma lista fixae global de valores permitidos.
Anexos
Trechos citados a partir do arquivo
SPS 1.10_pt.pdf(versão 1.10, última atualização em 22/05/2025), seções"Carta" (XML da Carta, XML da Carta com Resposta, XML do Documento Mencionado pela Carta, XML da Resposta para
uma Carta) e "Comentário" (estrutura análoga).
Classificação (esforço / risco / relevância)
@article-typedodocumento atual quanto ao
@related-article-typedeclarado, substituindo a checagem atual contra uma listaglobal única.
test_related_articles.pyé o maior arquivo de teste do lote (1774 linhas), sinal de quehá muitos cenários de
@article-type/@related-article-typejá cobertos que podem regredir com uma mudançana lógica de validação.
documentos SPS-válidos.
Referências
packtools/sps/validation/related_articles.py