Cadastrar, Listar, Editar e Excluir dados de um XML com ASP – Parte 02

Continuação do Artigo: Parte 01
Listando e Excluindo dados do XML

Listar todo o conteúdo de um XML é realmente a parte mais fácil, complicado é você listar e formatar o XML dentro de um arquivo com indicadores XSL. No artigo anterior (Parte 01), temos o arquivo Banco.xml com as tags nome, email e telefone. Nesse artigo vamos aprender a listar e excluir todos os elementos de dentro do nó usuario.

De primeira vamos organizar o arquivo Visualizar.xsl, olha só como ele tem que:

Visualizar.xsl

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
  <xsl:template match="/">
    <center>
      <font color="#000000" size="2" face="MS Sans Serif">Visualizando Dados</font>
      <table width="465" border="1" cellspacing="0" cellpadding="0">
        <tr>
          <td width="117" height="22"><div align="center"><strong>Nome</strong></div></td>
          <td width="125"><div align="center"><strong>E-mail</strong></div></td>
          <td width="107"><div align="center"><strong>Telefone</strong></div></td>
          <td width="106"><div align="center"><strong>Ações</strong></div></td>
        </tr>
        <xsl:for-each select="cadastro/usuario">
          <tr align="center">
            <td height="22"><xsl:value-of select="nome"/></td>
            <td><xsl:value-of select="email"/></td>
            <td><xsl:value-of select="telefone"/></td>
            <td><a><xsl:attribute name="href">Editar.asp?nome=<xsl:value-of select="nome"/><xsl:value-of select="link"/></xsl:attribute>Editar</a>/<a><xsl:attribute name="href">Listar.asp?nome=<xsl:value-of select="nome"/><xsl:value-of select="link"/></xsl:attribute>Apagar</a></td>
          </tr>
        </xsl:for-each>
      </table>
    </center>
  </xsl:template>
</xsl:stylesheet>

Com o stylesheet (que não vem ao caso explicar no momento) vamos fazendo a estrutura de visualização de todos os elementos da tag usuario através de um for-each assim:

e fechando com

Pegamos o valor dos elementos com essa estrutura aqui: .

Usamos o atributo para gerar links, no nosso caso para excluir e editar (que não será mostrado nesse artigo).

Em uma página chamada Listar.asp criamos os objetos para chamar o XML e o XSL e integra-los com o transformNode:

Set XSLDOC = Server.CreateObject("Microsoft.XMLDOM")
Set XMLDOC = Server.CreateObject("Microsoft.XMLDOM")

XMLDOC.Load(Server.MapPath("Banco.xml"))
XSLDOC.Load(Server.MapPath("Visualizar.xsl"))
Response.Write(XMLDOC.transformNode(XSLDOC))

Para deletar é simples, criamos um XMLDOC.documentElement para escolher qual nó vamos deletar e chamamos por querystring como tem no do Visualizar.xsl, que no caso usamos o select=”nome”, deletando com o removeChild, segue abaixo o código completo de Listar.asp

Listar.asp

<%@ Language="VBScript" %>
<html>
<body>
<a href="Cadastro.asp">CADASTRAR</a> - <a href="Listar.asp">LISTAR</a>
<br><br>
<%
Set XSLDOC = Server.CreateObject("Microsoft.XMLDOM") ' Criando Objeto
Set XMLDOC = Server.CreateObject("Microsoft.XMLDOM") ' Criando Objeto

' Listando Dados
XMLDOC.Load(Server.MapPath("Banco.xml"))
XSLDOC.Load(Server.MapPath("Visualizar.xsl"))
Response.Write(XMLDOC.transformNode(XSLDOC))

' Deletando Dados
If CStr(Request.QueryString("Nome")) <> "" Then
	Banco = Server.MapPath("Banco.xml") ' Chamando o Arquivo XML para sofrer alteração
	XMLDOC.Load(Banco)

	Set RaizXML = XMLDOC.documentElement
	Set AlterarReg = RaizXML.selectSingleNode("usuario[nome='"&Request.QueryString("nome")&"']")
	RaizXML.removeChild(AlterarReg) ' Linha de remoção de Objetos

	XMLDOC.Save(Banco)
	Response.Write("<script>alert('Deletado com Sucesso!');location='Listar.asp'</script>")
End If

Set XSLDOC = Nothing
Set XMLDOC = Nothing
%>
</body>
</html>

E pronto, mais um artigo finalizado, até o próximo!

Agência OFF, desenvolvimento de soluções web para as Agências Digitais

programador javascript em salvador bahia, programador javascript na bahia, front-end salvador bahia, montagem sites salvador bahia

Introdução ao XML Schema

Explicando o que é um Schema

Na realidade o Schema é usado para definir os blocos de construção de um arquivo XML, que pode ser visto como um suplente para DTDs.

O elemento é o elemento raiz de todo XML

O XML Schema pode ser traduzido como XSD (XML Schema Definition / XMLs Definidos por Esquemas), segue um exemplo simples para estudo…

Vamos chamar esse aquivo de “teste01.xsd”

<?xml version="1.0"?>
	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
		... aqui colocamos o resto da estrutura Schema
	</xsd:schema>

Depois de criado o Schema pode ser associado a um arquivo XML como no exemplo do código a seguir

<?xml version="1.0" ?>
<principal xmlns="http://www.tedk.com.br"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.tedk.com.br colocar_schema.xsd">">
<arquivo tid="1">
	<item_numeral>COD: 600</item_numeral>
		<item_nome>
			<teste_nome>Coloque qualquer coisa 001</teste_nome>
			<valor_nome>Coloque qualquer coisa 002</valor_nome>
		</item_nome>
	<descricao>Aqui você digita qualquer descricao</descricao>
	<foto>imagem.gif</foto>
</arquivo>
</principal>

o Schema é referenciado logo no inicio do elemento raiz do aquixo XML que está sendo configurado:

O xmlns=”http://www.tedk.com.br” é uma declaração, uma namespace. Essa namespace diz ao validador que todos os elementos do que serão utilizados irão vim da url especificada.

A segunda parte, xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” indica a localização do Schema, a instância que vai ser utilizada. O segundo valor é a localização do Schema que pretende utilizar para que namespace: xsi:schemaLocation = “http://www.tedk.com.br colocar_schema.xsd”.

Nos próximos Posts irei colocar mais a respeito do Schema, foi só uma simples e breve introdução.
Bons estudos.

Agência OFF, desenvolvimento de soluções web para as Agências Digitais

programador javascript em salvador bahia, programador javascript na bahia, front-end salvador bahia, montagem sites salvador bahia

Usando a Tag asp:xml ASP.NET

Nada como puxar um XML e configurar ele dentro de um XSL com uma linha só de comando, é possível com a tag
Simples é fácil de utilizar, ela você pode chamar um XML puro com o “DocumentSource” ou modelar no XSL com o “TransformSource”

OBS: Não irei dizer detalhes do XSL pois estou fazendo referências ao ASP.NET, mais de primeira mão, é super fácil.

Então segue abaixo as três páginas que você precisa para modelar tudo

Index.aspx

<%@ Page Language="VB" %>
<html>
<head>
  <title>Gerar XML</title>
</head>
<body>
	<form runat="server">
		<asp:Xml Id="XMLPage" DocumentSource="teste.xml" TransformSource="teste.xsl" runat="server" />
	</form>
</body>
</html>

 

teste.xml

<?xml version="1.0" ?>
<classe_01>
  <bancos>
    <bancos_nome>Access</bancos_nome>
    <bancos_tipo>Database</bancos_tipo>
    <bancos_nome_completo>Microsoft Access</bancos_nome_completo>
    <bancos_linguagens>ASP, ASP.NET</bancos_linguagens>
    <bancos_tamanho>0 MB</bancos_tamanho>
    <bancos_qualidade>5</bancos_qualidade>
  </bancos>
  <bancos>
    <bancos_nome>Oracle</bancos_nome>
    <bancos_tipo>Database</bancos_tipo>
    <bancos_nome_completo>Oracle Database</bancos_nome_completo>
    <bancos_linguagens>ASP, PHP, JSP</bancos_linguagens>
    <bancos_tamanho>200 MB</bancos_tamanho>
    <bancos_qualidade>10</bancos_qualidade>
  </bancos>
  <bancos>
    <bancos_nome>MySQL</bancos_nome>
    <bancos_tipo>Database</bancos_tipo>
    <bancos_nome_completo>MySQL Database</bancos_nome_completo>
    <bancos_linguagens>ASP, PHP, JSP, ASP.NET</bancos_linguagens>
    <bancos_tamanho>0 MB</bancos_tamanho>
    <bancos_qualidade>9</bancos_qualidade>
  </bancos>
  <bancos>
    <bancos_nome>SQL SERVER</bancos_nome>
    <bancos_tipo>Database</bancos_tipo>
    <bancos_nome_completo>Microsoft SQL SERVER 2005</bancos_nome_completo>
    <bancos_linguagens>ASP e ASP.NET</bancos_linguagens>
    <bancos_tamanho>500 MB</bancos_tamanho>
    <bancos_qualidade>10</bancos_qualidade>
  </bancos>
</classe_01>

 

teste.xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
	<table id="Transform" border="1" cellpadding="3" cellspacing="0" style="font:12px Arial;">
		<tr style="font-weight: bold;">
		  <td>NOME</td>
		  <td>TIPOS</td>
		  <td>COMPLETO</td>
		  <td>LINGUAGENS</td>
		  <td>TAMANHO</td>
		  <td>QUALIDADE</td>
		</tr>
	<xsl:apply-templates select="classe_01/bancos"/>
</table>
</xsl:template>

<xsl:template match="bancos">
    <tr>
      <td><xsl:value-of select="bancos_nome"/></td>
      <td><xsl:value-of select="bancos_tipo"/></td>
      <td><xsl:value-of select="bancos_nome_completo"/></td>
      <td><xsl:value-of select="bancos_linguagens"/></td>
      <td align="center"><xsl:apply-templates select="bancos_tamanho"/></td>
      <td align="center"><xsl:value-of select="bancos_qualidade"/></td>
    </tr>
</xsl:template>
</xsl:stylesheet>

Agência OFF, desenvolvimento de soluções web para as Agências Digitais

programador javascript em salvador bahia, programador javascript na bahia, front-end salvador bahia, montagem sites salvador bahia

ASP.NET – Repeater Control : Tutorial 04

Aula baseada no site da w3schools
Código pronto para puxar informações de um arquivo XML, simples e prático!

Arquivo: RepeaterControl.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<catalogo>
<cd>
	<titulo>Empire Burlesque</titulo>
	<artista>Bob Dylan</artista>
	<ano>1985</ano>
</cd>
<cd>
	<titulo>Hide your heart</titulo>
	<artista>Bonnie Tyler</artista>
	<ano>1988</ano>
</cd>
<cd>
	<titulo>Greatest Hits</titulo>
	<artista>Dolly Parton</artista>
	<ano>1982</ano>
</cd>
<cd>
	<titulo>Still got the blues</titulo>
	<artista>Gary Moore</artista>
	<ano>1990</ano>
</cd>
<cd>
	<titulo>Eros</titulo>
	<artista>Eros Ramazzotti</artista>
	<ano>1997</ano>
</cd>
</catalogo>

Arquivo: RepeaterControl.aspx

<%@ Page Language="VB" Debug="True" Explicit="True" %>
<%@ Import NameSpace="System.Data" %>
<script runat="server">
	Sub Page_Load
		If Not Page.IsPostBack Then
			Dim MeuCdCatalogo = New DataSet
				MeuCdCatalogo.ReadXml (MapPath("RepeaterControl.xml"))
				Catalogo.DataSource = MeuCdCatalogo
				Catalogo.DataBind()
		End If
	End Sub
</script>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Repeater Control</title>
</head>
<body>
<form runat="server">
	<asp:Repeater Id="Catalogo" runat="server">
    	<HeaderTemplate>
        	<table border="1" align="center" width="50%">
            	<tr>
                	<th>Título</th>
                    <th>Artista</th>
                    <th>Ano</th>
                </tr>
        </HeaderTemplate>
        <ItemTemplate>
        	<tr>
            	<td><%# Container.DataItem("Titulo") %></td>
                <td><%# Container.DataItem("Artista") %></td>
                <td><%# Container.DataItem("Ano") %></td>
            </tr>
        </ItemTemplate>
        <FooterTemplate>
        	</table>
        </FooterTemplate>
    </asp:Repeater>
</form>
</body>
</html>

Acesse também: Webly

Agência OFF, desenvolvimento de soluções web para as Agências Digitais

programador javascript em salvador bahia, programador javascript na bahia, front-end salvador bahia, montagem sites salvador bahia

DOM com XML

É um código pronto, todo comentado, simples de entender!!
Arquivo: Banco.xml

<catalog>
  <cd>
    <titulo>Empire Burlesque</titulo>
    <artista>Bob Dylan</artista>
    <outro01>USA</outro01>
    <ipresa>Columbia</ipresa>
    <preco>10.90</preco>
    <ano>1985</ano>
  </cd>
  <cd>
    <titulo>Hide your heart</titulo>
    <artista>Bonnie Tyler</artista>
    <outro01>UK</outro01>
    <ipresa>CBS Records</ipresa>
    <preco>9.90</preco>
    <ano>1988</ano>
  </cd>
  <cd>
    <titulo>Greatest Hits</titulo>
    <artista>Dolly Parton</artista>
    <outro01>USA</outro01>
    <ipresa>RCA</ipresa>
    <preco>9.90</preco>
    <ano>1982</ano>
  </cd>
  <cd>
    <titulo>Still got the blues</titulo>
    <artista>Gary Moore</artista>
    <outro01>UK</outro01>
    <ipresa>Virgin records</ipresa>
    <preco>10.20</preco>
    <ano>1990</ano>
  </cd>
  <cd>
    <titulo>Eros</titulo>
    <artista>Eros Ramazzotti</artista>
    <outro01>EU</outro01>
    <ipresa>BMG</ipresa>
    <preco>9.90</preco>
    <ano>1997</ano>
  </cd>
</catalog>

 

 

A mágia está toda aqui…
Arquivo: index.html

<script type="text/javascript">
var xmlDoc;

	// Verificando o IE
	if (window.ActiveXObject) {
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	}
	// Verificando o Mozilla, Firefox, Opera, etc.
		else if (document.implementation.createDocument) {
		xmlDoc=document.implementation.createDocument("","",null);
	}
		else {
		alert("Seu site não suporta essa plataforma"); // Caso não tenha suporte a plataforma
	}

	xmlDoc.async = false;
	xmlDoc.load("Banco.xml"); // Carrega o arquivo XML

var x = xmlDoc.getElementsByTagName("CD"); // Carregando a pag principal
	i = 0;

	// Função para avançar os valores
	function avancar() {
		if (i < x.length) {
			i++;
			display();
		}
	}

	// Função para voltar os valores
	function voltar() {
		if (i>0) {
			i–;
			display();
		}
	}

// Função que carrega quando o site é exibido
function display() {
	var artista, titulo, ano;
	// Dando valor para as variáveis
	artista = (x[i].getElementsByTagName("artista")[0].childNodes[0].nodeValue);
	titulo = (x[i].getElementsByTagName("titulo")[0].childNodes[0].nodeValue);
	ano = (x[i].getElementsByTagName("ano")[0].childNodes[0].nodeValue);

	// Caregando o HTML dentro da div Show
	document.getElementById("show").innerHTML="<b>Artista:</b> "+artista+" <b>Título:</b> "+titulo+" <b>Ano:</b> "+ano;
}
</script>
<p id="show" style="font-family: verdana; font-size: 12px">
<input onClick="voltar()" value="<< Voltar" type="button" />
<input onClick="avancar()" value="Avançar >>" type="button" />

Agência OFF, desenvolvimento de soluções web para as Agências Digitais

programador javascript em salvador bahia, programador javascript na bahia, front-end salvador bahia, montagem sites salvador bahia