Isso é um pouco embaraçoso porque não percebi isso antes, mas percebi algo. Ainda não encontrei um método de validação que manipule corretamente um único esquema RELAXNG com o Schematron incorporado, mas descobri uma maneira de validar corretamente o documento DocBook 5.
Acontece que o DocBook 5.0 não usa o padrão ISO do Schematron, mas usa o Schematron 1.5. Por causa disso, minhas tentativas de extrair e validar as regras do Schematron usando os recursos do Esquema do ISO estavam falhando. Usando os scripts e o método XSL descritos no link (não se esqueça de obter os arquivos obsoletos RNG2Schtrn.xsl e XSD2Schtrn .xsl, que funciona com o Schematron 1.5) foi bem sucedido.
A essência é:
-
Use um arquivo XSL (
RNG2Schtrn.xsl
) para extrair as regras do Schematron 1.5 do esquema RELAXNG -
Use os arquivos XSL de validação do Schematron 1.5 (
schematron-basic.xsl
encontrado no link ) para criar um arquivo XSL de validação a partir das regras do Schematron para o documento DocBook. -
Processe o documento DocBook usando a validação XSL criada na etapa 2 e procure por erros na saída.
-
Use uma ferramenta que possa manipular esquemas RELAXNG para validar o restante do documento DocBook.