Korzystanie z XSL |
|
|
Można powiązać dokument XML'owy z arkuszem XSL który ma dokonać jego transformacji, dokonuje się tego poprzez ustawienie znaczników: <?xml version="1.0"?> <?xml-stylesheet type="text/xml" href="14-2.xsl"?> Powinno to pozwolić na zinterpretowanie dokumentu na przykład przez przeglądarkę lub sam serwer przy próbie pobrania pliku. Niestety IE nie stosuje się do specyfikacji i wymaga innego nagłówka dla pliku xsl <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> zamiast <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/XSL/Transform/1.0" xmlns:html="http://www.w3.org/TR/REC-html40" result-ns="html"> Nie można więc stworzyć uniwersalnego szablonu. Kolejną różnicą IE w stosunku do specyfikacji jest brak domyślnych wzorców, w związku z tym trzeba dopisać te reguły. Istnieje wiele kompilatorów XSLT, które umożliwiają przetwarzanie dokumentów z czego najpopularniejszy jest XT, który też jest zawsze najbliższy specyfikacji XSLT (dlatego że jego twórca bieże udział w jej tworzeniu). O to linki do stron zawierających kompilatory
Przedstawię najprostszy sposób korzystnia z parsera zgodnego z Java Api for XML Parsing jakim na przykład jest Xalan.
//import interfejsow
import javax.xml.transform.*;
import java.io.*;
public class SimpleTransform
{
public static void main(String[] args) throws Exception
{
//Pobranie fabrykatora obiektów, o tym jaki zostanie zwrócony
//decydują ustawienia środowiska, w przypadku XAlana jest to
// org.apache.xalan.transformer.TransformerImpl.
TransformerFactory tFactory = TransformerFactory.newInstance();
//Tworzymy obiekt transformujący w oparciu o arkusz
StreamSource xsl_src = new StreamSource("birds.xsl");
Transformer transformer = tFactory.newTransformer(xsl_src);
// Dokonujemy transformacji
StreamSource xml_src = new StreamSource("birds.xml");
StreamResult out =new FileOutputStream("out.xml")
transformer.transform(xml_src, out);
//po wszystkim
}
}
|