Php+xml
#3
Posted 28/12/2003, 13:10
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
Posted 28/12/2003, 21:08
-=-=-=-=-=-=-=-=-=-=-=-=-=-
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) UNSIGNEDe 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.
#5
Posted 29/12/2003, 08:00
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
Posted 29/12/2003, 22:55
Sim... o php tem uma extenção com essa finalidade!!sobre a apresentacao dos seus textos em um pdf o php gera pdf dinamicamente ?
Acho q não ... claro q varia de caso pra caso!o xml como danco de dados consome + espaco no servidor ?
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 + RDBo xml tem performace menor q um RDB ?
Conseguiste resolver teu problema com o XSLT?
#7
Posted 30/12/2003, 08:23
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
Posted 02/01/2004, 22:52
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]
#9
Posted 03/01/2004, 08:16
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
de qualquer forma valeu ....
#10
Posted 17/04/2004, 11:56
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
Posted 20/04/2004, 14:13
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...
#13
Posted 22/04/2004, 09:36
alguém sabe me ajudar?!
tô tentando fazer no windows, mas se souber instalar os xslt no linux, ajuda tbm....
#14
Posted 26/04/2004, 01:59
Obrigado pelos seus posts altamente explicativos, eu ainda vou ficar fera nesse troço
"Das war sehr Freundlich"!
Se tu tivesses algum tutorial, ou link sobre xml, agradeceria bastante!
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)