XML - XML schema

Gostaria que me explicassem o que exatamente são esses dois conceitos. Sei que eles interagem, portanto preciso saber como é a intereção de XML com XML-schema. Além disso, como uso ambos em meus softwares java?

Primeira coisa, você sabe o que é um XML?
Se a sua resposta for sim, ótimo, então vamos partir para explicar o que é um XML-Schema.
Se a sua resposta for não, então vamos primeiro tentar te explicar o que é um XML e só depois você poderá entender o que é um XML-Schema.

Sim…Em suma imagino que XML seja uma forma através da qual podemos marcar dados de forma estruturada…Mas não entendi direito onde entra o schema na jogada…

XML é muuuuuuuuuito mais do que isso. Ele tem uma sintaxe própria com regras própria e tudo mais. O schema é uma das partes desta regra (e não é nada simples).

Basicamente, há elementos e atributos. Os elementos têm a forma de :

<elemento_raiz>
    <outro_elemento>Texto</outro_elemento>
    <mais_outro_elemento>Texto</outro_elemento>
    <elemento_com_subelementos>
        <subelemento>conteudo</subelemento>
    </elemento_com_subelementos>
    <elemento_vazio/>
    <elemento_com_atributo valor="1" tamanho="22">
        <alguma_coisa_qualquer nome="Maria Aparecida"/>
    </elemento_com_atributo>
</elemento_raiz>

Se você entende até aqui perfeitamente, então daí sim, vamos ver o que é um schema.

Imagine que vc PRECISE receber um xml assim:

<upload id="666"> <descricao>minha descricao</descricao> <usuario>meu.login</usuario> <duracao>120</duracao> <temas> <tema id="1">jornalismo</tema> <tema id="6">off-topic</tema> <tema id="100">centenario</tema> </temas> <version>1.0</version> <upload>

Ai o camarada resolve enfiar uma tag NADA HAVER la no meio e estraga toda a parada (ou manda um texto no lugar da duração, que deveria ser numérica). Uma forma de evitar isso é vc desenvolver o schema desse xml que diz “magrão, o xml só é valido se tiver essas e essas caracteristicas”. Ai o cara tendo o schema ele pode ver se o seu xml é válido.

http://www.w3schools.com/Schema/default.asp

Perceba que, se o xml mudar, vc pode criar outra versão e ter varios XSDs :wink:

Bom…Eu tentei resumir XML atentando para a sua dimensão funcional. Sei que estruturalmente ele tem sinteaxe e tudo mais…
Só realmente não conseguia entender onde entravam exatamente os tais schemas…Imaginei que fossem um tipo de meta-estrutura. Mas não sabia exatamente como usar. Até queria exemplos de casos de uso do XML com o XML Schema. Casos de uso reais seriam de grande ajuda até…

[quote]
Ai o camarada resolve enfiar uma tag NADA HAVER la no meio e estraga toda a parada (ou manda um texto no lugar da duração, que deveria ser numérica). Uma forma de evitar isso é vc desenvolver o schema desse xml que diz “magrão, o xml só é valido se tiver essas e essas caracteristicas”. Ai o cara tendo o schema ele pode ver se o seu xml é válido.[/quote]
Bom…No fim das contas era essa a impressão que eu tinha fo XML-Schema. Mas não entendo exatamente como utilizá-lo.

Pois é…Sabe que agora até fiquei em dúvida. Não sei se estávamos falando da mesma coisa.
Você teria algum exemplo bem básico que ilustre algumas dessas regras e sintaxe?

Outra questão…
Em termos de estrutura de arquivo…O XML e seu Schama estão inseridos no mesmo arquivo?
Introduzo o documento com o Schema dele e em seguida tenho minha estrutura de dados XML?

Ninguém?