Xml + xsl

6 respostas
ECO2004

Olá!

Eu estou aprendendo XSL e ainda não sei aplicar o que fiz ao meu documento xml.

Esse meu XSL abaixo se chama mercearia.xsl.

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
	<xsl:template match = "/">
		<html>
			<body>
				<table border = "1">
					<tr bgcolor = "#Afe340">
						<th>Sabão</th>
						<th>Pasta</th>
					</tr>
					<xsl:for-each select = "mercearia/item">
						<tr>
							<td>
								<xsl:value-of select = "sabao"/>
							</td>
							
							<td>
								<xsl:value-of select = "pasta"/>
							</td>
						</tr>
					</xsl:for-each>
				</table>
			</body>
		</html>
	</xsl:template>
</xsl:stylesheet>

O meu arquivo XML abaixo se chama mercearia.xml.

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type = "text/xsl" href = "mercearia.xsl"?>
<mercearia>
	<item>
		<sabao>lux</sabao>
		<pasta>colgate</pasta>
	</item>
	
	<item>
		<sabao>palmolive</sabao>
		<pasta>sensodine</pasta>
	</item>
	
	<item>
		<sabao>minerva</sabao>
		<pasta>sorriso</pasta>
	</item>
	
	<item>
		<sabao>omo</sabao>
		<pasta>randy</pasta>
	</item>
</mercearia>

Estão ambos na mesma pasta. Como posso aplicar esse XSL ao meu XML, criando um novo arquivo formatado?
O erro que aparece no firefox é Erro no carregamento da folha de estilos: Falha no processamento de uma folha de estilos XSLT.

6 Respostas

D

Vc vai precisar de um motor XSLT para poder gerar o resultado esperado, pesquise pelo XALAN da fundação apache que você irá entender.

ECO2004

DaviPiala:
Vc vai precisar de um motor XSLT para poder gerar o resultado esperado, pesquise pelo XALAN da fundação apache que você irá entender.

Preciso não. Os navegadores já possuem esse motor embutido!

D

Cara,
Eu brinquei um tempo com isso deve ter 4 anos e vou ser sincero não lembro se era possivel fazer isso direto via browser na epóca.

Mas de qualquer forma consegui a resposta pra vc.

Segue oq eu fiz pra executar.

Usei um exemplo da W3.

HTML mercearia
<html>
<head>
<script>
function loadXMLDoc(dname)
{
if (window.XMLHttpRequest)
  {
  xhttp=new XMLHttpRequest();
  }
else
  {
  xhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xhttp.open("GET",dname,false);
xhttp.send("");
return xhttp.responseXML;
}

function displayResult()
{
xml=loadXMLDoc("mercearia.xml");
xsl=loadXMLDoc("mercearia.xsl");

// code for IE
if (window.ActiveXObject)
  {
  ex=xml.transformNode(xsl);
  document.getElementById("example").innerHTML=ex;
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
  {
  xsltProcessor=new XSLTProcessor();


  xsltProcessor.importStylesheet(xsl);

  resultDocument = xsltProcessor.transformToFragment(xml,document);

  document.getElementById("example").appendChild(resultDocument);
  }
}
</script>
</head>
<body onload="displayResult()">
<div id="example" />
</body>
</html>

Xml da mercearia.

<?xml version="1.0" encoding="ISO-8859-1"?>
<mercearia>  
    <item>  
        <sabao>lux</sabao>  
        <pasta>colgate</pasta>  
    </item>  
    <item>  
        <sabao>palmolive</sabao>  
        <pasta>sensodine</pasta>  
    </item>    
    <item>  
        <sabao>minerva</sabao>  
        <pasta>sorriso</pasta>  
    </item>  
    <item>  
        <sabao>omo</sabao>  
        <pasta>randy</pasta>  
    </item>  
</mercearia>

XSL

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
  <h2>Mercearia do ECO2004</h2>
  <table border="2">
    <tr bgcolor="#FFFFFF">
      <th align="left">Sabao</th>
      <th align="left">Pasta</th>
    </tr>
    <xsl:for-each select="mercearia/item">
    <tr>
      <td><xsl:value-of select="sabao" /></td>
      <td><xsl:value-of select="pasta" /></td>
    </tr>
    </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

Qualquer problema é só avisar.

Abraço!

Andre_Fonseca

oi,

Procure pelo comando xjc que vem dentro do jdk

Digite no seu prompt de comando

/caminho/para/jdk/bin/xjc --help

Se você não conhece sugiro tentar usar o XMLSpy (pode baixar uma versão demo com todas as funcionalidades) para trabalhar com XML, XSD, XSLT, etc, ele ajuda bastante

Abs

ECO2004

Vlw pessoa, vou dar uma lida!!!

ECO2004

Vlw pessoa, vou dar uma lida!!!

Criado 29 de setembro de 2011
Ultima resposta 30 de set. de 2011
Respostas 6
Participantes 3