Skip to content

Conversation

@Rossi-Luciano
Copy link
Collaborator

O que esse PR faz?

Implementa 4 novas validações para o elemento <long-desc> conforme especificação SPS 1.10, atingindo 100% de conformidade com as regras de acessibilidade. As validações adicionadas são:

  • Restrição de mídia (apenas video/mp4 ou audio/mp3)
  • Detecção de duplicação de conteúdo com <label> ou <caption>
  • Validação de ocorrência única (máximo 1 por elemento)
  • Incompatibilidade com <alt-text>null</alt-text>

Onde a revisão poderia começar?

packtools/sps/validation/accessibility_data.py - linhas 427-697

Começar pelos 4 novos métodos de validação:

  1. validate_long_desc_media_restriction() (linha 427)
  2. validate_long_desc_not_duplicate_label_caption() (linha 493)
  3. validate_long_desc_occurrence() (linha 591)
  4. validate_long_desc_incompatible_with_null_alt() (linha 638)

Observar que seguem o mesmo padrão estabelecido pelas validações de <alt-text>.

Como este poderia ser testado manualmente?

  1. Executar a suíte de testes:
python -m unittest tests.sps.validation.test_accessibility_data
  1. Testar com XML de exemplo:
from lxml import etree
from packtools.sps.validation.accessibility_data import XMLAccessibilityDataValidation

xml = """
<body>
    <media mimetype="application" mime-subtype="pdf">
        <long-desc>Descrição com mais de 120 caracteres para passar na validação de comprimento mínimo do elemento long-desc</long-desc>
    </media>
</body>
"""

params = {
    "long_desc_media_restriction_error_level": "ERROR",
    "long_desc_duplication_error_level": "WARNING",
    "long_desc_occurrence_error_level": "ERROR",
    "long_desc_null_incompatibility_error_level": "WARNING",
    # ... demais params
}

validator = XMLAccessibilityDataValidation(etree.fromstring(xml), params)
results = list(validator.validate())

# Deve retornar erro: long-desc em PDF (não permitido)
  1. Verificar casos nos testes:
    • test_long_desc_media_restriction_invalid() - erro em PDF
    • test_long_desc_duplicates_label() - detecção de duplicação
    • test_long_desc_multiple_occurrence_failure() - múltiplas ocorrências
    • test_long_desc_with_null_alt_text_failure() - incompatibilidade

Algum cenário de contexto que queira dar?

Este PR complementa as validações de acessibilidade já existentes para <alt-text>. Anteriormente, <long-desc> tinha apenas validações básicas (existência e comprimento), cobrindo 43% das regras SPS 1.10. Com este PR, atingimos 100% de conformidade.

As validações implementadas reutilizam lógica de <alt-text> quando aplicável (2 das 4 são adaptações), mantendo consistência no código. Todas as validações incluem suporte completo a internacionalização (i18n) com msg_text, msg_params, adv_text e adv_params.

Impacto: Melhora significativa na detecção de problemas de acessibilidade em documentos XML SciELO, especialmente para descrições longas de figuras, gráficos, vídeos e áudios.

Screenshots

N.A.

Quais são tickets relevantes?

N.A.

Referências

- Adiciona validação de restrição de mídia (video/mp4 ou audio/mp3)
- Adiciona detecção de duplicação de label/caption
- Adiciona validação de ocorrência única (0 ou 1 por elemento)
- Adiciona verificação de incompatibilidade com alt-text='null'
- Implementa suporte completo a i18n (msg_text, adv_text, adv_params)
- Atinge 100% de conformidade SPS 1.10 para <long-desc>
- 3 testes para restrição de mídia
- 3 testes para detecção de duplicação
- 2 testes para validação de ocorrência
- 3 testes para incompatibilidade com alt-text null
- Verifica internacionalização em todos os testes
- Verifica error levels configurados
- long_desc_media_restriction_error_level: ERROR
- long_desc_duplication_error_level: WARNING
- long_desc_occurrence_error_level: ERROR
- long_desc_null_incompatibility_error_level: WARNING
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant