Aprender XML
O que deves saber previamente
O que é o XML?
Como funciona o XML?
XML e Web browsers
Entidades, elementos e atributos
Programação com XML
Comunicar com o servidor utilizando o HTTPRequest
Trabalhar com ADO e XML
Bem Feito!
Para ler e entender este documento é necessário uma noção básica de HTML, e para entender o código fornecido deves perceber de VB ou de ASP.
XML significa eXtensible Markup Language e foi aprovado pelo World Wide Web Consortium (W3C) em Fevereiro de 1998.
XML não é na realidade uma nova linguagem, é uma meta-linguagem, que é utilizada para definir outras linguagens.
XML cria documentos que são bem estruturados e como resultado todas as linguagens baseadas em XML são também bem estruturadas. O que isto significa é que os dados em XML são mais fácilmente utilizados.
Então, XML é a fundação de uma nova maneira de comunicar através da Internet, porque possibilita que as empresas e os seus sistemas computacionais comuniquem mais facilmente.
XML é utilizado para criar outras linguagens de marcação
XML é utilizadopara a criação de muitas outras liguagens de marcação. Uma das mais conhecidas é o XSL, que é feito a partir do XML. A relação entre o XML e o XSL é muito importante. Se o XML é somente dados, o XSL é utilizado para alterar esses dados no formato que pode posteriormente ser utilizado.
Por exemplo o XSL pode ser utilizado para pôr cor no XML, ou para alterar o XML numa outra coisa qualquer.
O desenvolvimento das normas do XML é coordenado pelo W3C.
Quem é o W3C? (WorldWide Web Consortium)
O W3C foi fundado em Outubro de 1994. O seu objectivo é desenvolver protocolos comuns através de um "consorcio internacional da industria". http://www.w3.org
No W3C, podes encontrar:
- um repositório de informação sobre a WWW para programadores e utilizadores
- implementações de código referência para os diversos standards
- vários prototipos e exemplos de aplicações que demonstram a utilização das novas tecnologias que estão a ser elaboradas pelo W3C
O W3C é um conjunto de partes interessadas que se reunem para trabalhar em diversas novas tecnologias da Internet. O seu processo é substancial e inclusivo e resulta numa decisão por consenso (se bem que existem histórias de braços de ferros dentros dos grupos de trabalho), de qualquer forma o resultado final tem sempre uma forte adesão.
Como trabalhas com o W3C?
Primeiro alguém (um grupo, uma empresa, uma pessoa) submete uma nota ao W3C sobre uma tecnologia ou um determinado ponto tecnológico. Depois de MUITA discussão e consultas, é criada uma proposta rascunho.
Com alguma sorte e muito trabalho, pode ser alcançada uma recomendação. Nessa altura, a tecnologia pode ser considerada pronta para uma alargada utilização pela industria.
Uma Nota é somente uma idéia - não existe qualquer compromisso em seguir o seu teor.
Este é um trabalho em evolução - um grupo dentro do W3C está activamente a trabalhar nele.
Foi obtido algum concenso dentro do grupo de trabalho e este é revisto por instências superiores.
A idéia que começou como uma Nota tornou-se agora 'oficial' de acordo com o W3C, esta tecnologia está pronta a ser utilizada.
O que é que o W3C não é
O que o W3C não é, é ser um "policia". Eles não obrigam a utilização dos acordos ou tecnologias recomendadas.
Todas as partes envolvidas podem (e algumas vezes fazem-no) "estender" ou
"melhorar" as resoluções alcançadas
Mais leituras
Para ver algumas das actividades e projectos presentes no W3C, visita o
http://www.w3.org/Consortium/Activities
Não só o XML contém os teus dados, como pode também conter a estrutura e até a classificação da informação contida no teu documento. Com a utilização do XML o documento contêm a informação sobre si mesmo!
Isto é possivel porque em XML podes definir as tuas próprias marcas. Isto é o que faz com que seja muito melhor que o HTML que somente possui um pequeno conjunto de marcas de visualização - mas o XML está interessado em muito mais do que a somente a visualização!
Criação de novas marcas em XML
Se seguires as regras - podes facilmente criar novas marcas XML.
As marcas em XML assemelham-se muitas vezes as marcas em HTML. Aqui estão alguns exemplos de marcas XML:
|
<book_title>XML PROGRAMMING WITH VB AND
ASP</book_title>
<author>Mark Wilson and Tracey Wilson</author>
<publisher>Manning Publications</publisher>
<copydate>2000</copydate>
<retailprice>$1,000,000</retailprice>
<ISBN> 1884777872</ISBN>
|
Quais são as regras do XML?
Existem 10 regras básicas para o XML.
Vamos ver quais são os objectivos definidos para o XML pelo W3C:
- XML será directamente utilizado na Internet.
- XML será suportado por uma vasta variedade de aplicações.
- XML será compativel com o SGML.
- Será fácil escrever programas que façam o processamento de documentos XML.
- O número de caracteristicas opcionais no XML deverá ser mantida num número minimo, idealmente zero.
- Os documentos XML deverão ser passiveis de ser lidos por humanos e razoavelmente claros.
- O desenho do XML deverá ser preparado rapidamente.
- O desenho do XML deverá ser formal e conciso.
- Os documentos XML deverão ser facilmente criados.
- A sintetização das marcas XML é de minima importância.
É importante frisar aqui que isto está só no começo. Quase nenhum site na internet está efectivamente a utiliza-lo, pela simples razão de que quase nenhum browsers o suporta.
Microsoft Internet Explorer 4.0, 5.0, 5.5 e o próximo 6.0 todos suportam XML.
Netscape tem algum suporte para XML no Communicator/Navigator 6.0.
e também tem um alargado suporte ao RDF (Resource Description Format) para apresentar o que a Netscape chama de "completa integração da informação do escritório."
RDF
RDF é uma aplicação XML que é particularmente adequada a modelação de dados.
Através do suporte da Netscape e do projecto Open Directory (http://www.dmoz.org)
RDF está a ser utilizado para a catalogar a Internet.
Elementos
Os Elementos têm este aspecto:
|
<BOOK>...<TITLE>XML programming for VB and ASP
developers</TITLE>...</BOOK>
|
Atributos
Os Atributos são parte ou propriedade dos elementos.
<BOOK TITLE="XML programming for VB and ASP
developers">...</BOOK>
Uma interessante semelhança entre atributos e elementos é que o elemento BOOK (livro) contém um atributo PUBLISHER (editor):
|
<Book Publisher="Manning">XML programming for VB and ASP
developers</Book>
|
Convém lembrar que os atributos não podem ser hierárquicos - não podem conter sub-elementos, mas podes alterar um atributo para ser um elemento. Então utilizarias:
<Publication>
<Book>XML
programming for VB and ASP developers</Book>
<Publisher>Manning</Publisher>
</Publication>
|
Entidades
Qualquer ficheiro ou recurso web que possa ser "incluido" num ficheiro XML é uma entidade. Entidade é também utilizada para referir a representação de caracteres especiais ou substituição de conjunto de caracteres e inclusões.
Um exemplo de utilização de entidades para substituição de entidades por um conjunto de caracteres é:
|
<!ENTITY BookName "XML programming for VB and ASP
developers">
|
Podes então utilizar a entidade &BookName; no documento seja qual for o local onde esta seja referenciada, sendo esta substituida pelo conjunto de caracteres "XML programming for VB and ASP developers". Em VB, isto é semelhante à utilização de uma constante.
Vamos ver alguns exemplos de programação com XML.
Criação de objectos XML
Para os programadores de ASP, utilizam a seguinte sintaxe para a criação de um novo objecto DOMDocument através de programação - esta é a mesma sintaxe para a criação de qualquer outro objecto.
|
<%
Dim xmlDoc
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
%>
|
e para os programadores de VB, podem utilizar quer o código do CreateObject, acima mencionado, ou podem adicionar uma referência no seu projecto ao objecto "Microsoft XML, version 3.0" e podem então utilizar:
|
Dim xmlDoc As New DOMDocument
|
Como ter os objectos Microsoft XML no teu PC
Para utilizar estes exemplos de código que utilizam o objecto Microsoft XML
(por exemplo o DOMDocument), tens de primeiro adicionar uma referência no teu projecto ao objecto "Microsoft XML 3.0" -
naturalmente tens de ter instalados estes objectos no teu ambiente de desenvolvimento e no ambiente de produção onde vais instalar a tua solução.
Existem duas maneiras simples para colocar os objectos Microsoft XML no teu sistema. Podes ter o IE5/5.5 (ou o próximo 6.0) instalados, ou podes expandir o IE4 com o resdistribuivel XML que podes efectuar o download do website da Microsoft.
Esta é a maneira como podes preencher uma caixa de combinação com os dados de um ficheiro XML!
|
Private Sub cmdRefresh_Click()
Dim xmlCustomers As MSXML.DOMDocument
Dim xmlNode As MSXML.IXMLDOMNode
lstCustomers.Clear
'Call DLL to get array filled with Values
Set xmlCustomers = objCustomer.GetCustomerList()
For Each xmlNode In xmlCustomers.documentElement.childNodes
lstCustomers.AddItem xmlNode.childNodes(1).firstChild.nodeValue
& "_
" &
xmlNode.childNodes(2).firstChild.nodeValue lstCustomers.ItemData(lstCustomers.NewIndex) =_
xmlNode.childNodes(0).firstChild.nodeValue
Next xmlNode
End Sub
|
Se pretendes carregar o teu XML num DOMDocument, então em ASP podes utilizar:
|
Response.Write(xmlDoc.xml)
|
ou em VB podes utilizar:
A maneira mais simples de depurar é a visualizar a propriedade "xml" do DOMDocument e ver se foi possivel carregar o documento. Se esta não mostrar nada então houve um erro no carregamento. Então, utiliza a seguinte linha de código para ver o último erro.
Para descobrir qual foi o último erro, aceder à colecção parseError.
Uma das coisa interessantes sobre o XMLHTTP é a possibilidade de enviar e obter dados XML através de um servidor HTTP.
Esta é uma maneira fácil de ficar verdadeiramente independente do servidor, visto que o programa não se preocupa qual o servidor HTTP com o qual está a comunicar, nem mesmo qual o sistema operativo que o mesmo utiliza - tudo o que o servidor HTTP precisa é possuir a capacidade de receber chamadas HTTP, como o POST e o GET e depois passar essas chamadas para um qualquer tipo de programa (ASP, CGI, Java Servlets, etc).
Então podes ver que a combinação de XML via chamadas HTTP como um tipo de middleware ou cola para juntar os sistemas.
No nosso caso, vamos abrir uma conecção para o servidor web (o Personal Web Server 1.0a) no meu PC e depois utilizar um ficheiro ASP que nos irá dar uma resposta.
Para efectuar a conecção, vamos utilizar um objecto que é disponibilizado em conjunto com o IE5 e que se chama XMLHTTP. Basicamente, tu abres a conecção "POST" para o teu servidor web (que afinal é tudo o que um web server pode efectuar!) e depois utilizando essa conecção, tu "comunicas" com o ficheiro PEOPLEVB.ASP e esse vai retornar a tua escolha em formato XML.
Na parte de VB deste exemplo, o código para nos conectarmos ao servidor web é o seguinte:
|
'create the objects
Dim xmlHttp As new XMLHTTPRequest
Dim xmlDoc As DOMDocument
'open the POST (or GET) connection to the web server
xmlHttp.Open "POST", "http://localhost/xmlcode/demo.asp", False
'establish the connection
xmlHttp.Send
'receive the response - note there are different types of
responses, binary and text is also supported
Set xmlDoc = xmlHttp.responseXML
|
No lado do servidor web, vamos utilizar algum código ASP contido no ficheiro demo.asp. Certifica-te que o do lado do teu servidor o ficheiro ASP estabeleça o ContentType como "text/xml" e que seja retornado para o cliente um ficheiro XML, utiliza o seguinte:
|
<%
'make a variant object
Dim xmlDoc
'place the DOMDocument into the xmlDoc object
Set xmlDoc = Server.CreateObject("MSXML.DOMDocument")
'load the XML document object here
xmlDoc.load Server.MapPath("people.xml")
'set the content type to XML - note other types are
supported
Response.contenttype = "text/xml"
'now send back the DOMDocument you have loaded above
response.write xmlDoc
%>
|
Agoras tens um pequena aplicação em VB, que comunica com um ficheiro ASP num servidor web e que recebe um DOMDocument como resposta.
Se estás a utilizar o ADO 2.1, podes gravar o teu recordset para um ficheiro XML utilizando o método Save do objecto ADO recordset.
O método Save aceita dois argumentos, FileName e PersistFormat. O truque está no PersistFormat, porque podes utilizar "adPersistADTG" que é um formato binário ou podes utilizar o adPersistXML para um formato XML.
Experimenta este código em VB para gravar o teu ADO recordset em XML:
|
Private Sub cmdSaveAdoFile_Click()
Dim PEOPLE As ADODB.Recordset
Dim ObjConn As New ADODB.Connection
'open an existing ODBC connection to your database
ObjConn.Open "VBXML"
'execute a select SQL statement against the database
Set PEOPLE = ObjConn.Execute("select * from People")
'save the recordset as an XML file
PEOPLE.Save "c:\adodemo.xml", adPersistXML
End Sub
|
Agora, para carregar esse ficheiro XML de novo para o ADO recordset, podes utilizar o seguinte código para o botão load (carregar) :
|
Private Sub cmdLoadAdoFile_Click()
Dim PEOPLE As ADODB.Recordset
Set PEOPLE = New ADODB.Recordset
'open your XML file and load it
PEOPLE.Open "c:\adodemo.xml", "Provider=MSPersist"
'lets have a message box popup the number of records
MsgBox PEOPLE.RecordCount
End Sub
|
E é tudo o que é preciso fazer. Agora sabes como gravar e carregar um recordset para um ficheiro XML em poucas linhas de código.
Estás agora no bom caminho para compreender o XML e trabalhar com ele. Lê os exemplos que se seguem nas diversas secções.
|