Jump to content


Photo

Php+xml


  • Faça o login para participar
13 replies to this topic

#1 Sh4d0wn

Sh4d0wn

    12 Horas

  • Usuários
  • 265 posts
  • Sexo:Masculino
  • Interesses:muitos.

Posted 27/12/2003, 08:56

alguem poderia me indicar um site ou apostila BOA q falasse sobre o assunto ???


#2 kartesus

kartesus

    ich bin der Geist der stets verneint

  • Usuários
  • 210 posts
  • Sexo:Não informado
  • Localidade:Rio Grande do Sul
  • Interesses:PHP e sexo

Posted 27/12/2003, 18:43

Cara, entendo bem PHP + XML ... mas aprendi de livros e pesquisas (exerimentos) ... não sei te dizer nenhum site mas se tu postar tuas dúvidas eu posso te ajudar!! talvez a partir dela agente faz um tutz legal e bota aqui no fórum...
Ainda com dúvidas? Poste-as aki

#3 Sh4d0wn

Sh4d0wn

    12 Horas

  • Usuários
  • 265 posts
  • Sexo:Masculino
  • Interesses:muitos.

Posted 28/12/2003, 13:10

eu to con alguns problemas para instalar o xslt aqui ..

e eu queria saber assim .. qual a utilidade do xml na web .. ? alem de servir como banco de dados ?

e uma coisa .. esse codigo aqui ..


<?
/***********************************************************************************
SCRIPT......: Exibe um arquivo XML
BY .........: Júlio César Martini - Colunista PHP (www.imasters.com.br)
DATA .......: 17/11/2003
/***********************************************************************************/

	//FUNÇÃO DA TAG INICIAL DO ARQUIVO XML
	function FuncInicial($parser, $elemento) {
  if($elemento == "AGENDA") {
  	echo "<table cellpading=0 cellspacing=0 border=0 width=50%>";
  	echo "<tr><td bgcolor=0099CC align=center>";
  	echo "<font face=Arial size=2 color=FFFFFF><b>Agenda em XML iMasters - Artigo 82 PHP";
  }
  elseif($elemento == "CONTATO")
  	echo "<tr><td height=20>";
  elseif($elemento == "NOME") {
  	echo "<tr><td bgcolor=#C1F0FF>";
  	echo "<font face=Arial size=2><b>";
  }
  elseif($elemento == "EMAIL") {
  	echo "<tr><td bgcolor=#DDF7FF>";
  	echo "<font face=Arial size=2>";
  }
  elseif($elemento == "CIDADE") {
  	echo "<tr><td bgcolor=#DDF7FF>";
  	echo "<font face=Arial size=2>";
  }
	}//FECHA FUNCTION FUNCINICIAL
	
	
	//FUNÇÃO PARA EXIBIR OS DADOS DO DOCUMENTO XML
	function FuncDados($parser, $dados) {
  echo $dados;
	}//FECHA FUNCTION FUNCINICIAL
	
	
	//FUNÇÃO DA TAG INICIAL DO DOCUEMENTO XML
	function FuncFinal($parser, $elemento) {
  if($elemento == "AGENDA")
  	echo "</b></font></td</tr></table>";
  elseif($elemento == "CONTATO")
  	echo "</td></tr>";
  elseif($elemento == "NOME")
  	echo "</b></font></td></tr>";
  elseif($elemento == "EMAIL")
  	echo "</font></td></tr>";
  elseif($elemento == "CIDADE")
  	echo "</font></td></tr>";
	}//FECHA FUNCTION FUNCFINAL
	
	//CRIA O PARSER XML
	$parser = xml_parser_create();
	
	//DEFINE AS FUNÇÕES
	xml_set_element_handler($parser, "FuncInicial", "FuncFinal"); 

/* >>> xml_set_element_handler identifica altomaticamente "FuncInicial" e final como funcoes ??? e ela ja passa os parametros altomaticamente ????? <<<<< */

	xml_set_character_data_handler($parser, "FuncDados");
	
	//ABRE O ARQUIVO XML PARA LEITURA
	$ponteiro = fopen("agenda.xml", "r");
	
	//INICIA A ANÁLISE DO DOCUMENTO XML
	while($dados = fread($ponteiro, 4096)) {
/* >>> outra coisa .. para q a funcao fread leia o arquivo todo eu devo usar a funcao filesize antes para medir o tamanho dele né ??? <<< */

  //INICIA A ANÁLISE DO DOCUMENTO XML
  echo xml_parse($parser, $dados);
	}//FECHA WHILE
	
	//LIBERA A MEMÓRIA USADA PELO PARSER
	xml_parser_free($parser);
?>

por inquanto he isso aew valeu pelo esforco ;)

Edição feita por: Sh4d0wn, 28/12/2003, 18:03.



#4 kartesus

kartesus

    ich bin der Geist der stets verneint

  • Usuários
  • 210 posts
  • Sexo:Não informado
  • Localidade:Rio Grande do Sul
  • Interesses:PHP e sexo

Posted 28/12/2003, 21:08

Como dizia o Jack: "Vamos por partes"!! ;)


-=-=-=-=-=-=-=-=-=-=-=-=-=-
Função do XML na Web:
=-=-=-=-=-=-=-=-=-=-=-=-=-=

Vou te dar um exemplo prático e depois teorizo um pouco em cima... flwz?!

Estou trabalhando em um sistema OpenSource para publicação de artigos cientificos na Web... eu tenho duas alternativas de armazenamento dos artigos:
RDBs (Relational DataBases, e.g., mySQL) ou XML.

No caso de eu escolher RDBs eu teria uma base de dados semelhante a esta:
artigo_id     SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
autor_id      TINYINT UNSIGNED NOT NULL,
texto          TEXT,
criado_em INTEGER (11)  UNSIGNED
e os artigos seriam inseridos no campo texto formatados com tags html (como os posts de um fórum), por exemplo:
<H1 class='artigo'>Uso de  XML + PHP</H1>
<I class='artigo'>escrito por <A href="mailto:kartesus@ig.com.br">kartesus</A></I>
<H2 class='artigo'>Resumo</H2>
<P class='artigo'>
Este texto tenta mostrar como, quando e porque usar XML em aplicações web com PHP.<BR />
Veja o gráfico : <IMG src='imagens/grafico.png' class='artigo' />
</P>

claro q o texto que eu pus não tem nada a ver com um artigo cientifico, mas ilustra como seria o conteúdo do campo texto. Pra manter algum controle sobre a
aparencia eu setei umas classes CSS nas tags.

Não ficou ruim o sistema trabalhando com RDBs, mas eu sou chato e, agora q o sistema funciona eu quero incrementar ele: quero uma versão para impressão;
ao invés de imagens vou exibir apenas suas URLs e o texto vai ser em preto (q pode ser impresso em qualquer impressora sem problemas!). Bom, pra isso vou ter q
adicionar um campo na minha RDB pra guardar esta versão e modificar meu script de cadastro que usa BBCode para, ao invés de trocar [IMG] por <IMG>, trocá-lo pela
URL apenas... já tá começando a dar trabalho desnecessário... mas o pior vem agora!!! quero disponibilizar os artigos para download em PDF!! Agora xxxxxx!!

Não se eu estivesse usando XML... dessa forma eu guardo os artigos utilizando sua estrutura lógica assim:
<artigo>
<autor>
  <nome>Kartesus</nome>
  <email>kartesus@ig.com.br</email>
</autor>

<titulo>Uso de XML + PHP</titulo>
<resumo>
<para>
Este texto tenta mostrar como, quando e porque usar XML em aplicações web com PHP.
Veja o grafico <pic url="imagens/grafico.png" />
</para>
</resumo>
</artigo>


agora usando XSLT eu posso transformar esse XML em HTML, texto e PDF sem problemas. Bom, como usar XSLT é assunto pra outro tutoriazinho ;) mas acho q esse
consegue mostrar um exemplo clássico q pede XML... dados que podem assumir mais de uma apresentação. É bem interessante tabém, misturar XML com RDB, assim tu
supres algumas difuldades do XML como performar buscas!!


-=-=-=-=-=-=-=-
XML + PHP
=-=-=-=-=-=-=-=

O PHP4 suporta duas API's a SAX (Simple API for XML) e DOM. Eu não mexo com DOM então vou explicar como funciona a SAX...
NOTA1: Essa extensão utiliza o expat, que pode ser encontrado em http://www.jclark.com/xml/expat.html.
NOTA2: Consuta o manual do PHP para uma relação das funções disponíveis http://br2.php.net/xml.
NOTA3: O PHP5 vai contar apenas com a libxml2 do projeto GNOME q conta com as duas APIs supracitadas.


Bom, a idéia é bem simples... a função vai "ler" o arquivo do inicio ao fim, para cada "coisa" conhecida q encontre ela vai executar uma função definida.
As "coisas" conhecidas são: elements (as tags), character data (o texto entre as tags) e processing instructions (codigo entre as tags <? ?>), entre outros menos usados...

O usuário (programador) deve definir uma função para manipular cada "coisa" e informar a API, assim:
function startTag ($parser, $nome, $atributos)
{
	//código para manipular a tag de abertura
}

function endTag ($parser, $nome)
{
	//código para manipular a tag de fechamento
}

//informa a API para utilizar as funções
xml_set_element_handler ($parser, 'startTag', 'endTag');


Sabendo disso acho q tu consegues entender o código q tu postaste... embora ele contenha algumas praticas equivocadas de programação!!

QQ coisa posta ;)

Edição feita por: kartesus, 28/12/2003, 22:37.

Ainda com dúvidas? Poste-as aki

#5 Sh4d0wn

Sh4d0wn

    12 Horas

  • Usuários
  • 265 posts
  • Sexo:Masculino
  • Interesses:muitos.

Posted 29/12/2003, 08:00

cara valeu mesmo ai pelas explicacoes...
sobre a API do xml eu to usando a q ja vem instalada no php 4.3.4 acho q he a SAX...

sobre a apresentacao dos seus textos em um pdf o php gera pdf dinamicamente ?
o xml como danco de dados consome + espaco no servidor ?
o xml tem performace menor q um RDB ?

bom por inquanto he iso aew....

quand vc puder responde ...

espero poder fazer um tutorial introdutorio sobre php+xml usando as suas explicacoes e as minhas experiencias .. ;)


#6 kartesus

kartesus

    ich bin der Geist der stets verneint

  • Usuários
  • 210 posts
  • Sexo:Não informado
  • Localidade:Rio Grande do Sul
  • Interesses:PHP e sexo

Posted 29/12/2003, 22:55

A idéia do tutorial é bem legal ... vamos às perguntas:

sobre a apresentacao dos seus textos em um pdf o php gera pdf dinamicamente ?

Sim... o php tem uma extenção com essa finalidade!! :D


o xml como danco de dados consome + espaco no servidor ?

Acho q não ... claro q varia de caso pra caso! ;)


o xml tem performace menor q um RDB ?

como db tu vai usar o XML mais ou menos como tu usaria um txt ... e nesses casos a performance do XML é superior a RDB ... é claro q se tu quiseres fazer um sistema de cadastro em XML tua performance vai pro espaço!! mas em muitos casos tu vai acabar usando PHP + XML + RDB

Conseguiste resolver teu problema com o XSLT?
Ainda com dúvidas? Poste-as aki

#7 Sh4d0wn

Sh4d0wn

    12 Horas

  • Usuários
  • 265 posts
  • Sexo:Masculino
  • Interesses:muitos.

Posted 30/12/2003, 08:23

aew valeuz ... eu vi o modulo de pdf do php muito legal :)

sobre o sistema de cadastro , se extivaer envolvidos email , senha ou informacoes confidenciais do usuario acho q o RDB emais seguro ...

bom sobre o xslt eu ainda n consegui nada ...

eu abiliei o uso da extensao php_xslt no php.ini mas fica dando o erro >>

Unknow(): Unable to load dynamic library 'c:/php/extensions/php_xslt.dll' - um dispositivo anexado ao sistema nao esta funcionando.
is unknow on line 0

:(

ja tentei usar barras invertidas para designar o diretorio mas deu o mesmo erro ...

c:\php\extensions\

eu tb copiei a dll para o diretorio c:\windows\system e direcionei o path das extencoes para ele mas deu erro ainda assim ....



para terminar por hj ...

em alguns sites q visitei como o Portajava.com tem uma marquinha do XML, no rodapé.

a minha duvida he .. em todo site q usa XML deve ter aquilo para q os usuarios tenham aceso ao XML usado por ele ou o portaljava.com e outros sites fazem isso apenas para disponibilizar as noticias de seu site para outros webmasters interessados.... e neste caso vemos uma das melhores aplicabilidades da xml . a portabilidade de informacoes... pois eu posso usar aquela xml e exibilo em meu site com a formatacao q eu desejar ...

?

mais uma coisa ..

http://www.portaljav...ckend-rdf10.php

o PortalJava.com usa o DOM para parsear(n tenho certesa se esta he a expresao correta) o XML ? ou o RDF a que ele faz referencia e um parser tb ?
pois emcontrei algumas tags... difertentes

como estas

<![CDATA[
<br>
A Sun liberou mais um release do Java[tm] 1.5.0 Alpha. A versão inclui novas especificações do Java Community Process JCP, melhorias no monitoramento e gerenciamento das aplicações.


]]>

e a maneira dele pasar os parâmetros >

<item rdf:about="http://www.portaljav...ticle&sid=607">


rdf:about=" ... "

bom por inquanto he só ...

desde já Feliz Ano Novo! pra vc Karteus

e pra todos os usuarios do forum.wmonline.com.br


#8 kartesus

kartesus

    ich bin der Geist der stets verneint

  • Usuários
  • 210 posts
  • Sexo:Não informado
  • Localidade:Rio Grande do Sul
  • Interesses:PHP e sexo

Posted 02/01/2004, 22:52

E ae carinha ... blz?!?!

Primeiro sobre o XSLT:
tu instalaste o Sablotron ?! No Windows eu uso o EasyPHP e tive que baixar o expat tb ... seguem os links:
http://download-2.gi...Win-1.0.1-2.zip [sablotron]
http://sourceforge.n...lease_id=192315 [expat]
Ainda com dúvidas? Poste-as aki

#9 Sh4d0wn

Sh4d0wn

    12 Horas

  • Usuários
  • 265 posts
  • Sexo:Masculino
  • Interesses:muitos.

Posted 03/01/2004, 08:16

ha .... eu num tinha usado isso pra o xslt...

mas neste caso ... fica (meio) inviavel montar sistemas q dependam de xslt p q depende de uma biblioteca extra... por exemplo quem hospeda o site no miarroba.. n podera usar um sistema q use xslt....

enquando xml puro sim.. p q a extencao expat he padrao no php 4.3.4 :D

de qualquer forma valeu ....


#10 nUtS

nUtS

    Turista

  • Usuários
  • 59 posts
  • Sexo:Não informado

Posted 17/04/2004, 11:56

Pessoal,
Eu consigo colocar scripts PHP no meio de XSLT?!
Tipo colocar uns if-else dentro do XSLT pra eu definir o que ele vai fazer?!

#11 nUtS

nUtS

    Turista

  • Usuários
  • 59 posts
  • Sexo:Não informado

Posted 20/04/2004, 14:13

pessoal..
tenho outra dúvida...

como instalar o Sablotron e o Expat no Windows?!
ou só o Sablotron, pois o já vem o expat na última versão do PHP...

#12 Sh4d0wn

Sh4d0wn

    12 Horas

  • Usuários
  • 265 posts
  • Sexo:Masculino
  • Interesses:muitos.

Posted 22/04/2004, 08:46

cara sobre o expat ...

eu creio que ele ja vem abilitado por default no php 4.3.x ...

sobre as outras coisas n sei ... n saco de xslt .. :D


#13 nUtS

nUtS

    Turista

  • Usuários
  • 59 posts
  • Sexo:Não informado

Posted 22/04/2004, 09:36

o expat vem... mas o sablotron tô tomando um pau...
alguém sabe me ajudar?!

tô tentando fazer no windows, mas se souber instalar os xslt no linux, ajuda tbm....

#14 vitor

vitor

    Novato no fórum

  • Usuários
  • 2 posts
  • Sexo:Não informado
  • Interesses:PHP, MySQL, FLASH, Photoshop, Corel Draw

Posted 26/04/2004, 01:59

kartesus,

Obrigado (y) pelos seus posts altamente explicativos, eu ainda vou ficar fera nesse troço :D

"Das war sehr Freundlich"!

Se tu tivesses algum tutorial, ou link sobre xml, agradeceria bastante!
ummmm, das ist noch nicht so gut, aber es wird werden!




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq