Bom dia amigos, eu estou com um problema.
Rodei a internet inteira e achei vários tutos, ensinando como gerar um XSLT via php. No caso, teriamos que ter um XML com os dados, e o arquivo PHP para ler o XML e gerar um XSL... esse tutorial tem vários na net...
Eu preciso do contrário, eu tenho um XML e XSL (eu fiz todinho da maneira que preciso). Agora preciso colocar código PHP dentro do XSL (quando eu faço isso o arquivo dá pau!)
Estou fazendo um mega questinario, com 120 questoes... eu queria externalizar as questões num arquivo XML! Formata-lo com XSL... e colocar as tags php dentro do XSL... XSL que vai ficar dentro do PHP (até aqui eu consegui)... mas quando eu coloco as TAGS php dentro do XSL ele não funciona... ele some!
Cheguei a conclusão que o XSL não aceita linguagem server-side.
Aguardo uma ajuda,
Muito obrigado amigos,
Tenham um bom dia!
Puxar Dados De Um Xsl Via Php, é Possivel ?
Started By Tiago Marques, 21/05/2009, 10:33
2 replies to this topic
#1
Posted 21/05/2009, 10:33
#2
Posted 27/05/2009, 02:30
É possível sim, mas você está tentando da forma errada. Coloca <?php ?> dentro do XSL vai dar erro mesmo já que o parser não entende isso. Você tem que definir todas as variáveis dentro do php e usar a função $foo-setParameter() para enviá-los ao XSL. Eu fiz isso a muuuuiiitoooo tempo atrás e não lembro exatamente a sintaxe. Abri aqui os arquivos mas eles são imensos e muitos complexos pra colar e você tentar entender então eu dei uma enxugada. Pode ser que não funcione mas você pelo menos saca a idéia.
PHP
XSL
Acho que dá pra entender. E como eu falei, copiar e colar não vai funcionar já que essa parte estava totalmente aninhada e relacionada a outro elementos. O que você precisa entender é que o php usa setParameter() para enviar e o XSL recebe isso como variável ($tempo).
Caso você queira usar essa variável dentro de algum parâmetro use colchetes:
PHP
// Load the XML source $xml = new DOMDocument( "1.0", "ISO-8859-1" ); $xml->preserveWhiteSpace = false; $xml->formatOutput = true; $xml->load('produtos/abc.xml'); $xsl = new DOMDocument("1.0", "ISO-8859-1" ); $xsl->preserveWhiteSpace = false; $xsl->formatOutput = true; $xsl->load('produtos.xsl'); // Configure the transformer $proc = new XSLTProcessor(); $proc->importStyleSheet($xsl); // attach the xsl rules $proc->setParameter('','tempo',iconv("ISO-8859-1", "UTF-8",strftime('%A, %d/%m/%Y',strtotime('now')))); echo $proc->transformToXML($xml);
XSL
<xsl:template match="general" mode="indicar"> <dl> <dt>Enviada em:</dt> <dd><xsl:value-of select="$tempo" /></dd> <dt>De:</dt> <dd><span id="mail">xxx@xxx.com</span></dd> </dl> </xsl:template>
Acho que dá pra entender. E como eu falei, copiar e colar não vai funcionar já que essa parte estava totalmente aninhada e relacionada a outro elementos. O que você precisa entender é que o php usa setParameter() para enviar e o XSL recebe isso como variável ($tempo).
Caso você queira usar essa variável dentro de algum parâmetro use colchetes:
<form action="{$path}indicar.php" method="post" onsubmit="post(this);return false;">
- d1eg0. likes this
WebFórum - Equipe de Desenvolvimento - Monitor
Yeah I do have some stories, and it's true I want all the glory ...
Yeah I do have some stories, and it's true I want all the glory ...
#3
Posted 16/09/2010, 16:11
Esta dando um erro, no meu arquivo php
Fatal error: Class 'XSLTProcessor' not found in C:\wamp\www\teste\xsl\pagina.php on line 21
alguma dica?
Fatal error: Class 'XSLTProcessor' not found in C:\wamp\www\teste\xsl\pagina.php on line 21
alguma dica?
0 user(s) are reading this topic
0 membro(s), 0 visitante(s) e 0 membros anônimo(s)