-
Notifications
You must be signed in to change notification settings - Fork 24
Description
Objetivo
Implementar validações para o elemento <journal-meta> conforme a especificação SPS 1.10, aumentando a conformidade de X% para 75% (9 de 12 regras).
Nota: Algumas validações para <journal-meta> podem já estar parcialmente implementadas no repositório. Este Issue visa reavaliar, complementar e garantir cobertura completa das regras SPS 1.10.
Contexto
O elemento <journal-meta> identifica os metadados do periódico registrados na SciELO, incluindo IDs, títulos, ISSNs e publisher. Validações corretas garantem que todos os elementos obrigatórios estejam presentes, que ISSNs tenham formato válido, e que atributos obrigatórios estejam corretos.
Conformidade atual: X de 12 regras implementadas (X%)
Meta após implementação: 9 de 12 regras (75%)
Documentação SPS
Referência oficial: https://docs.google.com/document/d/1GTv4Inc2LS_AXY-ToHT3HmO66UT0VAHWJNOIqzBNSgA/edit?tab=t.0#heading=h.journalmeta
Regras principais conforme SPS 1.10:
-
Ocorrência:
<journal-meta>deve aparecer exatamente uma vez em<front>
-
Elementos obrigatórios:
<journal-id journal-id-type="publisher-id">- Acrônimo oficial do periódico na SciELO<journal-title>- Título do periódico registrado na SciELO<abbrev-journal-title abbrev-type="publisher">- Título abreviado registrado na SciELO- Pelo menos um
<issn>(epub ou ppub) <publisher-name>- Nome do publisher registrado na SciELO
-
Elementos condicionais:
<journal-id journal-id-type="nlm-ta">- Obrigatório se o periódico for indexado no PubMed (usar título abreviado do PubMed)
-
Valores permitidos para
@journal-id-type:publisher-id- Acrônimo oficial SciELO (obrigatório)nlm-ta- Título abreviado PubMed (condicional)
-
Valores permitidos para
@pub-typeem<issn>:epub- ISSN onlineppub- ISSN print
-
Valores permitidos para
@abbrev-typeem<abbrev-journal-title>:publisher- Título abreviado do publisher (obrigatório)
-
Formato de ISSN:
- Padrão:
XXXX-XXXX(4 dígitos, hífen, 4 dígitos) - Total de 8 dígitos + 1 hífen (9 caracteres)
- Padrão:
-
Fonte de dados:
- Metadados disponíveis em CSV: title-tab-v2 (atualização semanal)
Regras a Implementar
P0 – Críticas (implementar obrigatoriamente)
| # | Regra | Nível | Descrição |
|---|---|---|---|
| 1 | Validar presença de <journal-meta> |
CRITICAL | O elemento <journal-meta> é obrigatório em <front> |
| 2 | Validar unicidade de <journal-meta> |
CRITICAL | O elemento <journal-meta> deve aparecer exatamente uma vez em <front> |
| 3 | Validar presença de <journal-id @journal-id-type="publisher-id"> |
CRITICAL | O elemento <journal-id> com @journal-id-type="publisher-id" é obrigatório |
| 4 | Validar presença de <journal-title> |
CRITICAL | O elemento <journal-title> é obrigatório |
| 5 | Validar presença de <abbrev-journal-title @abbrev-type="publisher"> |
CRITICAL | O elemento <abbrev-journal-title> com @abbrev-type="publisher" é obrigatório |
| 6 | Validar presença de pelo menos um <issn> |
CRITICAL | Pelo menos um elemento <issn> (epub ou ppub) é obrigatório |
| 7 | Validar presença de <publisher-name> |
CRITICAL | O elemento <publisher-name> é obrigatório |
| 8 | Validar formato de ISSN | ERROR | Valor de <issn> deve seguir formato XXXX-XXXX (4 dígitos, hífen, 4 dígitos) |
P1 – Importantes (implementar se possível)
| # | Regra | Nível | Descrição |
|---|---|---|---|
| 9 | Validar valores permitidos de @journal-id-type |
ERROR | Quando presente, @journal-id-type deve ser publisher-id ou nlm-ta |
| 10 | Validar valores permitidos de @pub-type em <issn> |
ERROR | Quando presente, @pub-type deve ser epub ou ppub |
| 11 | Validar unicidade de tipos de <issn> |
WARNING | Não deve haver múltiplos <issn> com o mesmo @pub-type |
P2 – Futuras (fora do escopo deste Issue)
| # | Regra | Motivo de exclusão |
|---|---|---|
| 12 | Validar presença de nlm-ta quando indexado no PubMed |
Alta complexidade - requer integração com API do PubMed ou base de dados externa |
| 13 | Validar consistência com title-tab-v2 | Média complexidade - requer download e parsing de CSV externo |
| 14 | Validar checksum de ISSN | Baixa prioridade - formato básico já é validado |
Arquivos a Criar/Modificar
Avaliar existentes (podem ter validações parciais):
packtools/sps/models/journal_meta.pyou similar – Verificar se modelo existepacktools/sps/validation/journal_meta.py– Verificar validações existentespacktools/sps/validation/rules/journal_meta_rules.jsonou similar – Verificar configuração
Criar (se não existirem):
packtools/sps/models/journal_meta.py– Modelo de extração de dadospacktools/sps/validation/journal_meta.py– Validaçõespacktools/sps/validation/rules/journal_meta_rules.json– Configuração de níveis de errotests/sps/validation/test_journal_meta.py– Testes unitários
Referenciar (implementações similares):
packtools/sps/validation/article_doi.py– Validação de unicidade e presençapacktools/sps/validation/utils.py– Funções auxiliares (build_response)
Exemplos de XML
XML Válido (deve passar sem erros):
<!-- Exemplo 1: Periódico completo indexado no PubMed -->
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Braz J Med Biol Res</journal-id>
<journal-id journal-id-type="publisher-id">bjmbr</journal-id>
<journal-title-group>
<journal-title>Brazilian Journal of Medical and Biological Research</journal-title>
<abbrev-journal-title abbrev-type="publisher">Braz. J. Med. Biol. Res.</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">1414-431X</issn>
<issn pub-type="ppub">0100-879X</issn>
<publisher>
<publisher-name>Associação Brasileira de Divulgação Científica</publisher-name>
</publisher>
</journal-meta>
</front>
<!-- Exemplo 2: Periódico sem indexação PubMed, apenas ISSN online -->
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">scielo</journal-id>
<journal-title-group>
<journal-title>SciELO Journal</journal-title>
<abbrev-journal-title abbrev-type="publisher">SciELO J.</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">2234-5678</issn>
<publisher>
<publisher-name>SciELO Publisher</publisher-name>
</publisher>
</journal-meta>
</front>
<!-- Exemplo 3: Periódico apenas com ISSN print -->
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">revista</journal-id>
<journal-title-group>
<journal-title>Revista de Exemplo</journal-title>
<abbrev-journal-title abbrev-type="publisher">Rev. Ex.</abbrev-journal-title>
</journal-title-group>
<issn pub-type="ppub">0100-0200</issn>
<publisher>
<publisher-name>Editora Exemplo</publisher-name>
</publisher>
</journal-meta>
</front>
<!-- Exemplo 4: ISSN com dígito verificador X -->
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">test</journal-id>
<journal-title-group>
<journal-title>Test Journal</journal-title>
<abbrev-journal-title abbrev-type="publisher">Test J.</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">1234-567X</issn>
<publisher>
<publisher-name>Test Publisher</publisher-name>
</publisher>
</journal-meta>
</front>XML Inválido – Caso 1: Sem (CRITICAL)
<front>
<article-meta>
<!-- sem journal-meta -->
</article-meta>
</front>Erro esperado: Elemento <journal-meta> é obrigatório em <front>
XML Inválido – Caso 2: Múltiplos (CRITICAL)
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">bjmbr</journal-id>
<journal-title>Journal Title</journal-title>
<abbrev-journal-title abbrev-type="publisher">J. Title</abbrev-journal-title>
<issn pub-type="epub">1414-431X</issn>
<publisher>
<publisher-name>Publisher</publisher-name>
</publisher>
</journal-meta>
<journal-meta>
<journal-id journal-id-type="publisher-id">other</journal-id>
<journal-title>Other Journal</journal-title>
<abbrev-journal-title abbrev-type="publisher">Other J.</abbrev-journal-title>
<issn pub-type="epub">1234-5678</issn>
<publisher>
<publisher-name>Other Publisher</publisher-name>
</publisher>
</journal-meta>
</front>Erro esperado: Elemento <journal-meta> deve aparecer exatamente uma vez em <front>
XML Inválido – Caso 3: Sem (CRITICAL)
<front>
<journal-meta>
<journal-id journal-id-type="nlm-ta">Braz J Med Biol Res</journal-id>
<journal-title-group>
<journal-title>Journal Title</journal-title>
<abbrev-journal-title abbrev-type="publisher">J. Title</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">1414-431X</issn>
<publisher>
<publisher-name>Publisher</publisher-name>
</publisher>
</journal-meta>
</front>Erro esperado: Elemento <journal-id> com @journal-id-type="publisher-id" é obrigatório
XML Inválido – Caso 4: Sem (CRITICAL)
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">bjmbr</journal-id>
<journal-title-group>
<abbrev-journal-title abbrev-type="publisher">J. Title</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">1414-431X</issn>
<publisher>
<publisher-name>Publisher</publisher-name>
</publisher>
</journal-meta>
</front>Erro esperado: Elemento <journal-title> é obrigatório
XML Inválido – Caso 5: Sem (CRITICAL)
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">bjmbr</journal-id>
<journal-title-group>
<journal-title>Journal Title</journal-title>
</journal-title-group>
<issn pub-type="epub">1414-431X</issn>
<publisher>
<publisher-name>Publisher</publisher-name>
</publisher>
</journal-meta>
</front>Erro esperado: Elemento <abbrev-journal-title> com @abbrev-type="publisher" é obrigatório
XML Inválido – Caso 6: sem @abbrev-type (CRITICAL)
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">bjmbr</journal-id>
<journal-title-group>
<journal-title>Journal Title</journal-title>
<abbrev-journal-title>J. Title</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">1414-431X</issn>
<publisher>
<publisher-name>Publisher</publisher-name>
</publisher>
</journal-meta>
</front>Erro esperado: Elemento <abbrev-journal-title> deve ter @abbrev-type="publisher"
XML Inválido – Caso 7: Sem (CRITICAL)
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">bjmbr</journal-id>
<journal-title-group>
<journal-title>Journal Title</journal-title>
<abbrev-journal-title abbrev-type="publisher">J. Title</abbrev-journal-title>
</journal-title-group>
<publisher>
<publisher-name>Publisher</publisher-name>
</publisher>
</journal-meta>
</front>Erro esperado: Pelo menos um elemento <issn> (epub ou ppub) é obrigatório
XML Inválido – Caso 8: Sem (CRITICAL)
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">bjmbr</journal-id>
<journal-title-group>
<journal-title>Journal Title</journal-title>
<abbrev-journal-title abbrev-type="publisher">J. Title</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">1414-431X</issn>
<publisher>
<!-- sem publisher-name -->
</publisher>
</journal-meta>
</front>Erro esperado: Elemento <publisher-name> é obrigatório
XML Inválido – Caso 9: ISSN formato inválido (sem hífen) (ERROR)
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">bjmbr</journal-id>
<journal-title-group>
<journal-title>Journal Title</journal-title>
<abbrev-journal-title abbrev-type="publisher">J. Title</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">1414431X</issn>
<publisher>
<publisher-name>Publisher</publisher-name>
</publisher>
</journal-meta>
</front>Erro esperado: ISSN deve seguir formato XXXX-XXXX. Valor encontrado: 1414431X
XML Inválido – Caso 10: ISSN formato inválido (hífen na posição errada) (ERROR)
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">bjmbr</journal-id>
<journal-title-group>
<journal-title>Journal Title</journal-title>
<abbrev-journal-title abbrev-type="publisher">J. Title</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">14-14431X</issn>
<publisher>
<publisher-name>Publisher</publisher-name>
</publisher>
</journal-meta>
</front>Erro esperado: ISSN deve seguir formato XXXX-XXXX. Hífen deve estar na posição 5.
XML Inválido – Caso 11: ISSN muito curto (ERROR)
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">bjmbr</journal-id>
<journal-title-group>
<journal-title>Journal Title</journal-title>
<abbrev-journal-title abbrev-type="publisher">J. Title</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">1414-43</issn>
<publisher>
<publisher-name>Publisher</publisher-name>
</publisher>
</journal-meta>
</front>Erro esperado: ISSN deve ter 9 caracteres (8 dígitos + 1 hífen). Valor encontrado tem 7 caracteres.
XML Inválido – Caso 12: ISSN muito longo (ERROR)
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">bjmbr</journal-id>
<journal-title-group>
<journal-title>Journal Title</journal-title>
<abbrev-journal-title abbrev-type="publisher">J. Title</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">1414-431XX</issn>
<publisher>
<publisher-name>Publisher</publisher-name>
</publisher>
</journal-meta>
</front>Erro esperado: ISSN deve ter 9 caracteres (8 dígitos + 1 hífen). Valor encontrado tem 10 caracteres.
XML Inválido – Caso 13: ISSN com caractere inválido (ERROR)
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">bjmbr</journal-id>
<journal-title-group>
<journal-title>Journal Title</journal-title>
<abbrev-journal-title abbrev-type="publisher">J. Title</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">141A-431X</issn>
<publisher>
<publisher-name>Publisher</publisher-name>
</publisher>
</journal-meta>
</front>Erro esperado: ISSN deve conter apenas dígitos (0-9) e X no último dígito. Caractere A inválido na posição 4.
XML Inválido – Caso 14: @journal-id-type inválido (ERROR)
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">bjmbr</journal-id>
<journal-id journal-id-type="doi">10.1234/journal</journal-id>
<journal-title-group>
<journal-title>Journal Title</journal-title>
<abbrev-journal-title abbrev-type="publisher">J. Title</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">1414-431X</issn>
<publisher>
<publisher-name>Publisher</publisher-name>
</publisher>
</journal-meta>
</front>Erro esperado: Valor "doi" não permitido para @journal-id-type. Valores permitidos: publisher-id, nlm-ta
XML Inválido – Caso 15: @pub-type inválido em (ERROR)
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">bjmbr</journal-id>
<journal-title-group>
<journal-title>Journal Title</journal-title>
<abbrev-journal-title abbrev-type="publisher">J. Title</abbrev-journal-title>
</journal-title-group>
<issn pub-type="online">1414-431X</issn>
<publisher>
<publisher-name>Publisher</publisher-name>
</publisher>
</journal-meta>
</front>Erro esperado: Valor "online" não permitido para @pub-type em <issn>. Valores permitidos: epub, ppub
XML Inválido – Caso 16: Múltiplos com mesmo @pub-type (WARNING)
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">bjmbr</journal-id>
<journal-title-group>
<journal-title>Journal Title</journal-title>
<abbrev-journal-title abbrev-type="publisher">J. Title</abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub">1414-431X</issn>
<issn pub-type="epub">2234-5678</issn>
<publisher>
<publisher-name>Publisher</publisher-name>
</publisher>
</journal-meta>
</front>Erro esperado: Múltiplos elementos <issn> com @pub-type="epub". Deve haver no máximo um ISSN de cada tipo.
XML Inválido – Caso 17: Elementos vazios (CRITICAL)
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id"></journal-id>
<journal-title-group>
<journal-title></journal-title>
<abbrev-journal-title abbrev-type="publisher"></abbrev-journal-title>
</journal-title-group>
<issn pub-type="epub"></issn>
<publisher>
<publisher-name></publisher-name>
</publisher>
</journal-meta>
</front>Erro esperado: Elementos obrigatórios não podem estar vazios
Padrão de Implementação
Diretrizes Gerais:
-
Seguir padrões existentes no repositório:
- Consultar implementações similares como
article_doi.py(validação de unicidade e presença) - Usar estrutura de classes já estabelecida no packtools
- IMPORTANTE: Verificar se já existem validações parciais para
<journal-meta>e integrá-las ou complementá-las
- Consultar implementações similares como
-
Internacionalização (i18n):
- OBRIGATÓRIO: Todas as mensagens devem suportar internacionalização
- Usar
advice_texteadvice_paramsembuild_response() - Consultar conversas anteriores sobre implementação de i18n no packtools
- Referência: validações em
article_contribs.pyque já implementam i18n completo
-
Validações condicionais:
- Validações que dependem de contexto devem retornar
Nonequando não aplicável - Exemplo: validação de formato de ISSN só se aplica se ISSN existir
- Usar
filter_results()nos testes para removerNone
- Validações que dependem de contexto devem retornar
-
Uso de
build_response():- Sempre usar
parent=self.data(dict completo, nunca string) - Campo
responsedeve conter:"OK","WARNING","ERROR","CRITICAL" - Sempre fornecer
advice_texteadvice_paramspara i18n
- Sempre usar
-
Modelo de dados:
- Criar propriedade que retorna dicionário com todos os metadados do periódico
- Dict deve conter:
journal_ids(lista de dicts com type e value),journal_title,abbrev_journal_title,issns(lista de dicts com pub_type e value),publisher_name,parent,parent_id,parent_lang
-
Validação de formato de ISSN:
- Regex:
^\d{4}-\d{3}[\dX]$ - Verificar:
- Comprimento exato: 9 caracteres
- Hífen na posição 5 (índice 4)
- Primeiros 4 caracteres são dígitos
- Caracteres 6-8 são dígitos
- Último caractere é dígito ou X (maiúsculo)
- Regex:
-
Validação de presença condicional:
- Verificar se pelo menos um
<issn>existe (epub ou ppub ou ambos) - Verificar se
<journal-id publisher-id>existe especificamente
- Verificar se pelo menos um
-
Validação de unicidade de tipos:
- Contar ocorrências de cada
@pub-typeem<issn> - Alertar se houver mais de um ISSN com o mesmo tipo
- Contar ocorrências de cada
Testes Esperados
Casos de teste obrigatórios:
Presença e unicidade de :
- Um
<journal-meta>em<front>(OK) - Sem
<journal-meta>em<front>(CRITICAL) - Múltiplos
<journal-meta>em<front>(CRITICAL)
Elementos obrigatórios:
- Com todos os elementos obrigatórios (OK)
- Sem
<journal-id publisher-id>(CRITICAL) - Sem
<journal-title>(CRITICAL) - Sem
<abbrev-journal-title>(CRITICAL) - Sem
<issn>(CRITICAL) - Sem
<publisher-name>(CRITICAL)
Atributos obrigatórios:
-
<journal-id>com@journal-id-type="publisher-id"(OK) -
<journal-id>sem@journal-id-type(CRITICAL) -
<abbrev-journal-title>com@abbrev-type="publisher"(OK) -
<abbrev-journal-title>sem@abbrev-type(CRITICAL) -
<abbrev-journal-title>com@abbrev-typediferente de "publisher" (ERROR)
Tipos de :
-
<journal-id publisher-id>e<journal-id nlm-ta>(OK) - Apenas
<journal-id publisher-id>(OK) - Apenas
<journal-id nlm-ta>sem publisher-id (CRITICAL) -
@journal-id-typecom valor inválido (ERROR)
Presença de :
- Com
<issn epub>(OK) - Com
<issn ppub>(OK) - Com
<issn epub>e<issn ppub>(OK) - Sem nenhum
<issn>(CRITICAL)
Tipos de :
-
<issn>com@pub-type="epub"(OK) -
<issn>com@pub-type="ppub"(OK) -
<issn>sem@pub-type(WARNING) -
@pub-typecom valor inválido (ERROR)
Formato de ISSN:
- ISSN válido
1414-431X(OK) - ISSN válido
0100-879X(OK) - ISSN válido com X
1234-567X(OK) - ISSN sem hífen
1414431X(ERROR) - ISSN com hífen errado
14-14431X(ERROR) - ISSN muito curto
1414-43(ERROR) - ISSN muito longo
1414-431XX(ERROR) - ISSN com letra inválida
141A-431X(ERROR) - ISSN com caractere especial
1414@431X(ERROR) - ISSN com espaços
1414 431X(ERROR) - ISSN com x minúsculo
1234-567x(ERROR - deve ser X maiúsculo)
Unicidade de tipos de ISSN:
- Um epub e um ppub (OK)
- Dois epub (WARNING)
- Dois ppub (WARNING)
- Três ou mais do mesmo tipo (WARNING)
Elementos vazios:
-
<journal-id>vazio (CRITICAL) -
<journal-title>vazio (CRITICAL) -
<abbrev-journal-title>vazio (CRITICAL) -
<issn>vazio (CRITICAL) -
<publisher-name>vazio (CRITICAL) - Elementos apenas com espaços (CRITICAL)
Casos de borda:
- Múltiplos
<journal-id>de tipos diferentes (OK) -
<journal-title>com caracteres especiais (OK) -
<publisher-name>com caracteres Unicode (OK) - ISSN de diferentes países (OK - formato padrão)
Total esperado: ~55 testes unitários
Estrutura de testes:
- Usar
filter_results()para removerNonedos resultados - Asserções devem usar campo
response(nãois_valid) - Testes devem ser autocontidos e descritivos
- Agrupar testes por categoria (presença, formatos, unicidade)
Critérios de Aceite
O PR será aceito quando:
- Verificação de validações existentes: Código existente para
<journal-meta>foi analisado e integrado ou substituído adequadamente - Todas as regras P0 implementadas (8 validações CRITICAL/ERROR)
- Todas as regras P1 implementadas (3 validações ERROR/WARNING)
- Testes unitários passando com cobertura mínima de ~55 casos
- Nenhum teste existente quebrado
- Arquivo
journal_meta_rules.jsoncriado com todos os níveis de erro - Internacionalização completa em todas as mensagens (i18n obrigatório)
- Código seguindo padrões do packtools (
build_response,filter_results, validações condicionais) - Modelo de dados criado com extração adequada de todos os metadados
- Validação de formato de ISSN funcionando com regex
- Validação de presença de elementos obrigatórios funcionando
- Validação de unicidade de tipos funcionando
- Documentação inline clara (docstrings)
Referências
Documentação SPS:
Padrões JATS:
- JATS 1.3 –
<journal-meta> - JATS 1.3 –
<journal-id> - JATS 1.3 –
<journal-title> - JATS 1.3 –
<issn> - JATS 1.3 –
<publisher-name>
Padrões externos:
Referências internas packtools:
- Internacionalização: Consultar conversas anteriores sobre implementação de i18n
- Implementações similares:
article_doi.py(unicidade e presença) - Funções auxiliares:
utils.py(build_response)
Labels Sugeridas
enhancement validation SPS-1.10 good-first-issue
Impacto Esperado
Antes:
- Conformidade SPS 1.10 para
<journal-meta>: X% (verificar validações existentes) - Elementos obrigatórios podem estar ausentes
- ISSNs com formato inválido podem passar
- Atributos obrigatórios podem estar ausentes
- Múltiplos ISSNs do mesmo tipo não detectados
Depois:
- Conformidade SPS 1.10 para
<journal-meta>: 75% (9 de 12 regras) - Validação CRITICAL de presença de elementos obrigatórios
- Validação ERROR de formato de ISSN (padrão XXXX-XXXX)
- Validação ERROR de valores permitidos em atributos
- Validação WARNING de unicidade de tipos de ISSN
- ~55 testes unitários garantindo qualidade
- Internacionalização completa (PT/EN/ES)
Benefícios:
- Melhora a qualidade dos XMLs SciELO
- Garante completude de metadados do periódico
- Detecta ISSNs malformados antes da publicação
- Previne ausência de informações críticas de identificação
- Facilita interoperabilidade com bases de dados externas
- Melhora indexação em sistemas bibliográficos
- Garante conformidade com padrões internacionais (ISO 3297)
- Facilita integração com PubMed e outras bases
- Facilita manutenção e depuração de XMLs