Por enquanto, vamos usar o "Bloco de Notas" para criar nosso arquivo XML. Vejamos primeiro um arquivo XML:
Exemplo 1
〈?xml version="1.0" encoding="gb2312" ?〉
〈Referências〉
<livros>
〈Nome〉Introdução ao XML 〈/Nome〉
〈Autor〉Zhang San〈/Autor〉
〈Unidade monetária do preço = "RMB"〉20,00〈/preço〉
</livros>
<livros>
<nome>Sintaxe XML</nome>
〈!--Este livro será publicado em breve--〉
〈Autor〉Li Si〈/Autor〉
〈Unidade monetária do preço = "RMB"〉18,00〈/preço〉
</livros>
〈/Materiais de Referência〉
Este é um arquivo XML típico. Após a edição, ele é salvo como um arquivo com o sufixo .xml. Podemos dividir este arquivo em duas partes principais: o preâmbulo do arquivo (Prolog) e o corpo do arquivo. A primeira linha deste arquivo é o preâmbulo do arquivo. Esta linha é algo que um arquivo XML deve declarar e também deve estar localizada na primeira linha do arquivo XML. Ela informa principalmente ao analisador XML como trabalhar. Entre eles, versão é o número de versão padrão usado por este arquivo XML, que é necessário para especificar o tipo de caractere usado neste arquivo XML, que pode ser omitido quando esta instrução é omitida, o código de caracteres a seguir deve ser código de caracteres Unicode. (recomenda-se não omitir). Como estamos usando o código de caracteres GB2312 neste exemplo, a instrução de codificação não pode ser omitida. Existem também algumas declarações no preâmbulo do arquivo, que apresentaremos mais tarde.
O restante do arquivo pertence ao corpo do arquivo, onde as informações de conteúdo do arquivo XML são armazenadas. Podemos ver que o corpo principal do arquivo é composto pelas tags de controle inicial <reference> e final </reference>. Isso é chamado de "elemento raiz" do arquivo XML. diretamente abaixo do elemento raiz. "Subelemento"; em "Livro" existem subelementos como "Nome", "Autor" e "Preço". A unidade monetária é um "atributo" no elemento <price> e "RMB" é o "valor do atributo".
〈!--Este livro será publicado em breve--〉 é um comentário como HTML. Em um arquivo XML, a parte do comentário é colocada entre as tags "〈!--" e "--〉".
Como você pode ver, o arquivo XML é bastante simples. Assim como o HTML, os arquivos XML também são compostos por uma série de tags. No entanto, as tags nos arquivos XML são nossas próprias tags personalizadas e têm significados claros.
Depois de ter uma impressão preliminar dos arquivos XML, vamos falar detalhadamente sobre a sintaxe dos arquivos XML. Antes de falar sobre gramática, devemos entender um conceito importante, que é XML Parse.
1. Analisador XML
A principal função do analisador é verificar se há erros estruturais no arquivo XML, remover as tags do arquivo XML e ler o conteúdo correto para processamento pelo próximo programa aplicativo. XML é uma linguagem de marcação usada para estruturar informações de arquivos. A especificação XML possui regras detalhadas sobre como marcar a estrutura de arquivos. O analisador é um software escrito de acordo com essas regras (principalmente escrito em Java). Assim como o HTML, no navegador deve haver um analisador de HTML para que o navegador possa “ler” várias páginas da web compostas por tags HTML e exibi-las diante de nós. Se houver tags que o analisador HTML do navegador não consiga ler, uma mensagem de erro será retornada para nós.
Como as tags HTML atuais são bastante confusas e existem muitas tags fora do padrão (algumas páginas da web podem ser exibidas normalmente com o IE, mas não com o Netscape Navigator), os designers de XML estipularam estritamente a sintaxe do XML a partir do desde o início e estrutura, os arquivos XML que escrevemos devem estar em conformidade com esses regulamentos, caso contrário, o analisador XML mostrará mensagens de erro impiedosamente.
Existem dois tipos de arquivos XML, um é o arquivo XML bem formado e o outro é o arquivo XML de validação.
Se um arquivo XML satisfizer certas regras relevantes na especificação XML e não usar um DTD (definição de formato de documento - detalhes posteriormente), o documento poderá ser chamado de Well-Formed. E se um arquivo XML for bem formado, o DTD for usado corretamente e a sintaxe no DTD estiver correta, então o arquivo será validado. Correspondendo aos dois arquivos XML, existem dois analisadores XML, um é o analisador Well-Formed e o outro é o analisador de validação. O IE 5 inclui um analisador de validação, que também pode ser usado para analisar arquivos XML bem formados.
Verifique se atende às condições de Bem Formado. Podemos abrir o primeiro arquivo XML que acabamos de editar com um navegador IE 5 ou superior.
Você pode perguntar por que a exibição no navegador é igual ao meu arquivo de origem? Isso mesmo, pois para arquivos XML conhecemos apenas o conteúdo, e sua forma de exibição é preenchida por CSS ou XSL. Aqui, não definimos seu arquivo CSS ou XSL para este arquivo XML, portanto ele é exibido em sua forma original. Na verdade, para o intercâmbio eletrônico de dados, é necessário apenas um arquivo XML. Se quisermos exibi-lo de alguma forma, devemos editar o arquivo CSS ou XSL (este assunto será discutido mais adiante).
2. Arquivo XML bem formado
Sabemos que o XML deve ser bem formado para ser corretamente analisado pelo analisador e exibido no navegador. Então, o que é um arquivo XML bem formado? Existem principalmente as seguintes diretrizes, que devem ser atendidas quando criamos arquivos XML.
Primeiro, a primeira linha de um arquivo XML deve declarar que o arquivo é um arquivo XML e a versão da especificação XML que ele utiliza. Não pode haver outros elementos ou comentários antes do arquivo.
Segundo, só pode haver um elemento raiz em um arquivo XML. Em nosso primeiro exemplo, 〈Referências〉... 〈/Referências〉 é o elemento raiz deste arquivo XML.
Terceiro, as tags do arquivo XML devem ser fechadas corretamente, ou seja, as tags de controle do arquivo XML devem ter uma tag de fechamento correspondente. Por exemplo: a tag <name> deve ter uma tag de fechamento </name> correspondente. Ao contrário do HTML, a tag de fechamento de algumas tags é opcional. Se você encontrar uma tag de unidade independente em um arquivo XML, que é semelhante a <img src=.....> em HTML sem uma tag de final, o XML a chama de "elemento vazio" e você deve usar o método de escrita é: 〈nome do elemento vazio/〉 Se o elemento contém atributos, o método de escrita é: 〈nome do elemento vazio nome do atributo = "valor do atributo"/〉.
Quarto, as marcas não devem se cruzar. Nos arquivos HTML anteriores, você poderia escrever assim:
〈B〉〈H〉XXXXXXX〈/B〉〈/H〉,
existem áreas sobrepostas entre as tags 〈B〉 e 〈H〉, mas em XML, é estritamente escalonado é proibido escrever tais marcas. As marcas devem aparecer em ordem regular.
Quinto, os valores dos atributos devem ser colocados entre sinais "". Como "1.0", "gb2312", "RMB" no primeiro exemplo. Eles estão todos entre " " e não podem ser perdidos.
Sexto, tags de controle, instruções e nomes de atributos em inglês devem diferenciar maiúsculas de minúsculas. Ao contrário do HTML, em HTML tags como <B> e <b> têm o mesmo significado, enquanto em XML tags como <name>, <NAME> ou <Name> são diferentes.
Sétimo, sabemos que em arquivos HTML, se quisermos que o navegador exiba intactas as coisas que inserimos, podemos colocar essas coisas em 〈pre〉〈/pre〉 ou 〈xmp〉〈/xmp〉 Marque o meio. Isso é essencial para criarmos páginas web de ensino de HTML, pois o código fonte do HTML deve ser exibido na página web. Em XML, para atingir tal função, devem ser utilizadas tags CDATA. As informações na tag CDATA são passadas intactas para o aplicativo pelo analisador e quaisquer tags de controle no segmento de informações não são analisadas. A área CDATA é marcada por: "<![CDATA[" como marca inicial e ">>" como marca final. Por exemplo: No código-fonte do Exemplo 2, exceto pelos símbolos "<![CDATA[" e ">>", o restante do analisador de conteúdo será entregue intacto ao aplicativo downstream, mesmo se houver espaços em branco em o início e o fim da área CDATA e os caracteres de nova linha, etc., também serão transferidos (observe que CDATA é um caractere maiúsculo).
Exemplo 2
〈![CDATA[flying xml〉〉〉〉〉,:-)
ooo〈〈〈〈〈〈
>〉
Oitavo, o XML lida com caracteres de espaço em branco de maneira diferente do HTML. O padrão HTML estipula que não importa quantos espaços em branco existam, eles serão tratados como um espaço em branco, enquanto em XML é estipulado que o analisador deve entregar fielmente todos os espaços em branco, exceto tags, para aplicativos downstream para processamento. Dessa forma, às vezes temos que abandonar o hábito de indentação ao escrever arquivos HTML, pois o analisador também precisa processar os espaços indentados. Tais como:
〈Autor〉Zhang San〈/Autor〉
e 〈autor〉
Zhang San 〈/Autor〉
é diferente para o analisador (este último inclui além do personagem Zhang San dentro da tag 〈Autor〉〈/Autor〉, também inclui duas marcas de nova linha e os caracteres antes de "Zhang San " símbolos de recuo de texto). Portanto, o analisador terá resultados de processamento diferentes após retirar a marca e passar as informações para a aplicação.
Se quisermos dizer claramente ao programa XML que os espaços nas tags têm um significado claro e não devem ser removidos casualmente (por exemplo, em alguns poemas, os espaços têm significados específicos), podemos adicionar um atributo XML integrado - xml - para as tags :space . Por exemplo (observe o caso de nomes e valores de atributos):
〈poetry xml:space="preserver"〉
Pátria! pátria!
Minha pátria!
〈/Poesia〉
Além disso, no arquivo XML, se os caracteres especiais da Tabela 1 forem utilizados, eles deverão ser substituídos pelos símbolos correspondentes.
Tabela 1
Símbolos especiais de substituição de caracteres && &
<⁢
>>
" "
' '
Para fazer um resumo aqui: o arquivo XML que atende aos requisitos acima é o arquivo XML bem formado. Este é o requisito mais básico para escrever arquivos XML. Você pode ver que a sintaxe dos arquivos XML é muito mais rígida que a do HTML. Devido a essas regulamentações rígidas, é muito mais fácil para os engenheiros de software escrever analisadores XML. Ao contrário da escrita de analisadores para a linguagem HTML, eles devem trabalhar duro para se adaptar aos diferentes métodos de escrita de páginas da web e melhorar a adaptabilidade de seus próprios navegadores. Na verdade, isso também é bom para nós, iniciantes. Basta fazer o que quiser e não precisa se preocupar em escrever vários HTMLs como antes.
Vemos que em arquivos XML, a maioria das tags personalizadas são usadas. Mas pense bem, se duas empresas A e B do mesmo setor desejam trocar dados entre si usando arquivos XML, a empresa A usa a tag <price> para representar as informações de preço de seus produtos, enquanto a empresa B pode usar <selling preço> para representar as informações de preço. Se um aplicativo XML ler as informações em seus respectivos arquivos XML, se souber apenas que a tag <price> representa informações de preço, as informações de preço da empresa B não poderão ser lidas e ocorrerá um erro. Obviamente, para entidades que queiram utilizar arquivos XML para troca de informações, deve haver um acordo entre elas - ou seja, quais tags podem ser utilizadas para escrever arquivos XML, quais subelementos podem ser incluídos no elemento pai, a ordem em qual cada elemento aparece e como definir as propriedades, etc. Dessa forma, eles podem ter uma comunicação tranquila ao trocar dados com XML. Esta convenção é chamada DTD (Document Type Definition, definição de formato de documento). Você pode pensar em um DTD como um modelo para escrever arquivos XML. Para troca de dados XML entre a mesma indústria, será muito mais conveniente ter um DTD fixo. Por exemplo, se todas as páginas XML dos principais shoppings eletrônicos na Internet seguirem o mesmo DTD, então poderemos facilmente escrever um aplicativo baseado nesse DTD para capturar automaticamente as coisas que nos interessam on-line. Na verdade, já existem diversas DTDs bem definidas, como MathML, SMIL, etc. mencionadas anteriormente.
Se um arquivo XML for Well-Formed e for criado corretamente com base em um DTD, então o arquivo XML será chamado: Validando arquivo XML. O analisador correspondente é chamado: Analisador de Validação.