A validação do esquema XML ignorada quando a conformidade no nível de fragmento está ativada?

StackOverflow https://stackoverflow.com/questions/3632767

  •  26-09-2019
  •  | 
  •  

Pergunta

Da minha estada com a validação XML e do esquema, parece que quando quando conformidade no nível de fragmentos está ativado para um XMLReader Por exemplo, a fonte XML deixa de ser validada contra qualquer Esquemas incluídos.

No entanto, não posso verificar isso a partir da documentação do MSDN, pois não parece descrever o comportamento do esquema XSD à luz do nível de conformidade. Além disso, se eu assumir que esse problema é verdadeiro, não consigo encontrar uma solução alternativa para isso.

Eu gostaria de saber como validar um xml fragmento contra um esquema XSD.

No meu caso, estou validando contra o Xhtml 1 esquema rigoroso. Pelo fato de tags HTML depreciadas comou003Ccenter> Não estão sendo sinalizados como inválidos, isso faz parte da razão pela qual acredito que a conformidade do fragmento ignora o esquema. Além disso, quando uso a conformidade no nível do documento no mesmo cenário, os erros de validade são sinalizados com sucesso.

Para uma amostra de código do tipo de cenário de validação que estou usando, veja isso.

Foi útil?

Solução

Eu acho que encontrei a resposta em Este artigo da MSKB Curiosamente intitulado Como: validar fragmentos XML contra um esquema XML no visual C#.NET A parte inferior do artigo afirma:

Nota: Somente as declarações de tipo e os elementos de nível superior no esquema XML são validados em relação a um esquema XML. Os subelementos são considerados locais e, portanto, não podem ser validados. Para validar um subelemento, declare um elemento de nível superior e consulte isso.

Eu acredito que há um erro nesse parágrafo e a intenção é declarar top-level elements in the XMLschema document/fragment are validated against an XML Schema

Como a amostra de código da Microsoft inicia seu fragmento no nível superior (em vez de arbitrariamente dentro de um documento), ele funciona com validação. No entanto, no meu caso, estou tomando uma construção de documentos intermediários.

Corrija -me se minha interpretação estiver errada.


Solução alternativa/solução

Uma solução alternativa é para mim encher meus fragmentos dentro de um elemento de nível superior para fins de validação.

Em outras palavras, se estou lidando com o fragmento XHTML:

<div>MY FRAGMENT</div>

Eu posso embrulhá -lo para validação para conforme o esquema XHTML Strict Como:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HTML fragment enclosed, conforming to XHTML 1.0 Strict Template.</title>
</head>
<body>

    <div>MY FRAGMENT</div>

</body>
</html>

Esta solução funciona para mim, então eu a usarei nesse meio tempo; ainda não existe ou não uma solução melhor, não tenho certeza.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top