Pergunta

Era uma vez que eu tinha um Doctype válido e XML válido. Coloquei o primeiro no topo deste último, cntrl-s'd e eis que tudo era como tudo deveria ser. Atualmente, tenho um esquema válido (construído personalizado para o meu XML ainda válido). Eu tentei minha mesma abordagem testada e verdadeira - mas, infelizmente, sem sucesso.

Recebo erros diferentes com cada validador diferente que eu uso e, no entanto, novos erros dos navegadores em que o envio (mas isso faz sentido). Portanto, não tenho certeza de que devo dar para ser mais útil. Validome diz:

Não consegue encontrar a declaração de elemento 'xs: esquema'.

e

A marcação no documento seguindo o elemento raiz deve ser bem formada.

(Mas isso é!)

Se fosse útil ter o XML e o esquema, por favor Não hesite em perguntar, Eu apenas pensei que, como os dois são válidos e longos, tentaria deixá -los de fora no começo. Tudo o que estou fazendo é colocar o esquema em cima do XML e enviá -lo através do validador/navegador.

Obrigado!

Foi útil?

Solução

@Nona Um esquema é um documento bem formado e sua instância também. Se, no entanto, você concatenar, o resultado não for mais bem formado.

Se o que você tem é:

<xs:schema ...>...</xs:schema>
<myxml ...>...</myxml>

Isso não é bem formado (nenhum elemento raiz único)

A razão pela qual a abordagem DTD é diferente é que o subconjunto interno é especificamente permitido para ser preso ao elemento raiz. Então:

<DOCTYPE myxml [
... my DTD ...
]>
<myxml ...>...</myxml>

está bem formado.

Infelizmente, não é completamente trivial associar um esquema a uma instância. Você pode ter que olhar para xsi:schema-location.

ATUALIZARInfelizmente, a resposta dependerá da estrutura de software que você usa. Afaik Não há como empacotar um documento e um esquema de modo que qualquer software aceite e tente validar. É por isso que os esquemas são muito mais esforços do que os DTDs.

Aqui está um site simples em que você pode enviar os dois documentos e o teste.

Qualquer coisa além disso pode precisar de um conhecimento do software. Haverá abordagens diferentes de acordo com se você está usando o Oracle, Microsoft, etc. Isso pode ser feito chamando os métodos para carregar o documento, carregar o esquema e, em seguida, validar ou definir propriedades (como pode ser feito em Xerces).

A resposta pode depender de por que você está fazendo isso. Se você estiver enviando documentos ao proprietário do esquema, eles provavelmente terão um sistema de validação. Se você precisar Valiadte contra o esquema de outra pessoa, precisará obter o software Schemavalidation e executá -lo. Você está no MS ou Unix/Java?

Mais atualizaçãoSugerir Qual é a melhor maneira de validar um arquivo XML contra um arquivo XSD?Como se costuma dizer, não há abordagem ultra simples.

Outras dicas

Apenas uma facada no escuro, mas você tem o prefixo de names do esquema XML declarado no elemento raiz? São xmlns: xs = "http://www.w3.org/2001/xmlschema". Se um prefixo de espaço para nome não estiver vinculado a um nome de namespace, o documento será inválido.

Correndo o risco de declarar o óbvio, convém considerar os motivos pelos quais a declaração do elemento XS: o esquema não pode ser encontrado pelo validador.

O segundo erro sugere que falta um suporte de ângulo em algum lugar, ou que existem alguns elementos que não estão aninhados corretamente.

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