feat(validation): Implementar validações para elemento <ext-link> conforme SPS 1.10#1091
Draft
feat(validation): Implementar validações para elemento <ext-link> conforme SPS 1.10#1091
<ext-link> conforme SPS 1.10#1091Conversation
…sing) Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
Co-authored-by: robertatakenaka <505143+robertatakenaka@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Implement validations for ext-link element
feat(validation): Implementar validações para elemento Feb 13, 2026
<ext-link> conforme SPS 1.10
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
O que esse PR faz?
Implementa 6 validações para o elemento
<ext-link>conforme especificação SPS 1.10, aumentando conformidade de 0% para 67%.Validações P0 (Critical/Error):
@ext-link-typee@xlink:hrefhttp://ouhttps://)uri,doi,pmid,pmcid,clinical-trialValidações P1 (Warning):
@xlink:titleobrigatório quando texto é genérico ou URLCaracterísticas técnicas:
advice_text+advice_params)Onde a revisão poderia começar?
packtools/sps/validation/ext_link.py- Lógica de validação (6 métodos geradores)packtools/sps/models/ext_link.py- Extração de dados (herda deFulltext)tests/sps/validation/test_ext_link.py- 26 testes unitáriosComo este poderia ser testado manualmente?
Executar testes:
python3 -m unittest tests.sps.validation.test_ext_link -vAlgum cenário de contexto que queira dar?
Padrões seguidos:
build_response()com i18n completo (análogo aarticle_doi.py,article_contribs.py)Fulltextpara contexto de parent (análogo arelated_articles.py){http://www.w3.org/1999/xlink}href→xlink_hrefFrases genéricas detectadas:
leia mais,clique aqui,acesse,veja mais,saiba mais,click here,read more,see more,learn more,more infoRegras não implementadas (fora de escopo):
utils.validate_doi_format())Garantias de qualidade:
Screenshots
N/A - Validações backend sem interface gráfica.
Quais são tickets relevantes?
Issue original contém especificação completa SPS 1.10 para
<ext-link>.Referências
<ext-link><ext-link>Original prompt
This section details on the original issue you should resolve
<issue_title>Criar validações para o elemento </issue_title>
<issue_description>## Objetivo
Implementar validações para o elemento
<ext-link>conforme a especificação SPS 1.10, aumentando a conformidade de 0% para 67% (6 de 9 regras).Contexto
O elemento
<ext-link>é usado para marcar links ou hyperlink text externos em artigos científicos, garantindo acessibilidade e interoperabilidade. Validações corretas asseguram que os links estejam bem formados, possuam atributos obrigatórios e sigam boas práticas de acessibilidade (texto descritivo ao invés de URLs genéricas).Conformidade atual: 0 de 9 regras implementadas (0%)
Meta após implementação: 6 de 9 regras (67%)
Documentação SPS
Referência oficial: https://docs.google.com/document/d/1GTv4Inc2LS_AXY-ToHT3HmO66UT0VAHWJNOIqzBNSgA/edit?tab=t.0#heading=h.n2z5yrri2aba
Regras principais conforme SPS 1.10:
Atributos obrigatórios:
@ext-link-type(obrigatório)@xlink:href(obrigatório)Valores permitidos para
@ext-link-type:uri- Link para websitedoi- Link DOI (deve incluir doi.org/ ou dx.doi.org/)pmid- Link para PubMedpmcid- Link para PubMed Centralclinical-trial- Link para registro de ensaio clínicoFormato do
@xlink:href:http://ouhttps://Acessibilidade:
<ext-link>deve ser descritivo@xlink:titlecom descriçãoRestrições:
<uri>ou<self-uri>(substituídos por<ext-link>)Regras a Implementar
P0 – Críticas (implementar obrigatoriamente)
@ext-link-type@ext-link-typeé obrigatório em todos os<ext-link>@xlink:href@xlink:hrefé obrigatório em todos os<ext-link>@xlink:href@xlink:hrefdeve ser URL completa começando comhttp://ouhttps://@ext-link-type@ext-link-typedeve ser um dos permitidos:uri,doi,pmid,pmcid,clinical-trialP1 – Importantes (implementar se possível)
@xlink:titlequando texto genérico@xlink:titledeve estar presente com descrição do destino do linkP2 – Futuras (fora do escopo deste Issue)
@xlink:hrefutils.validate_doi_format()Arquivos a Criar/Modificar
Criar:
packtools/sps/models/ext_link.py– Modelo de extração de dadospacktools/sps/validation/ext_link.py– Validaçõespacktools/sps/validation/rules/ext_link_rules.json– Configuração de níveis de errotests/sps/validation/test_ext_link.py– Testes unitáriosReferenciar (implementações similares):
packtools/sps/models/related_article.py– Modelo similar (também é link)packtools/sps/validation/article_doi.py– Validação de atributos obrigatórios e formatopacktools/sps/validation/utils.py– Funções auxiliares (build_response,is_valid_url_format)Exemplos de XML
XML Válido (deve passar sem erros):