2010-10-18 26 views
6

Utworzono dokument danych XML i arkusz stylów XSLT i chcę wyprowadzić dokument HTML na podstawie tych dwóch. Mój arkusz stylów ma znacznik, a mój dokument XML zawiera procesor (wraz z różnymi referencjami "xsl: value-of"). Moje pytanie brzmi: jaka jest rzeczywista "mechanika" pozyskiwania procesora XSLT (co, jak rozumiem, jest wbudowane we wszystkie przeglądarki), do odczytywania plików arkuszy stylów XML i XSLT i wyprowadzania dokumentu HTML, który następnie będzie wyświetlany na przeglądarka? Książka XML, którą czytałem, nie określa tego! DziękujęJak wydrukować plik HTML z arkusza stylów XML i XSLT

+0

Dobre pytanie, +1. Zobacz moją odpowiedź na wyjaśnienie. –

+0

sprawdź ten artykuł: http://www.yegor256.com/2014/06/25/xml-and-xslt-in-browser.html – yegor256

Odpowiedz

1

Moje pytanie brzmi, jakie są rzeczywiste „mechanika” na uzyskanie procesor XSLT (które, jak rozumiem, jest wbudowany do wszystkich przeglądarek internetowych) do odczytu stylów XML i XSLT pliki i wyjściowy dokument HTML, który będzie następnie wyświetlane w przeglądarce?

Jest to zadanie konkretnej przeglądarki HTML używanej do wywoływania jej procesora XSLT. Następnie przeglądarka interpretuje wyniki transformacji XSLT jako HTML, który powinien zostać wyświetlony. Zauważ, że ogólnie przeglądacze nie muszą obsługiwać wstępnego przetwarzania XSLT, więc mogą istnieć przeglądarki, które nie mają skojarzonego procesora XSLT i nie honorują pseudo-atrybutu xml-stylesheet PI dla type="text/xsl".

Aby uzyskać więcej informacji przeczytaj W3C specyfikację na „Associating Style Sheets with XML Documents

Aby przetestować transformacji XSLT w tym, nieco prymitywny sposób, można otworzyć plik XML z przeglądarki (zrobić swoją pracę domową i nauczyć jak otworzyć lokalny plik z przeglądarki) i sprawdzić wyniki za pomocą polecenia "View Source" lub podobnego.

Z pewnością nie polecam tej prymitywnej techniki. Jest znacznie lepiej użyć jednego z wielu istniejących IDE XSLT, takich jak XSelerator, tlen, Visual Studio, ..., itd.

+0

Dziękujemy za odpowiedź. Ale załóżmy, że chcę zrobić "test" na moim lokalnym komputerze, aby zobaczyć dokument HTML wyprowadzony przez przeglądarkę. Jak to zrobić? – Jack

+0

To jest inne pytanie. Zadaj nowe pytanie. To nowe pytanie nie ma nic wspólnego z XSLT: wystarczy otworzyć plik w przeglądarce za pomocą Plik -> Otwórz lub cokolwiek jest sekwencją menu do otwierania pliku w określonej przeglądarce. –

+0

Nie, moje pytanie jest powiązane, ale ja po prostu nie sądzę, że było jasne w moim brzmieniu. Moje pytanie brzmiało: załóżmy, że mam plik XML i powiązany arkusz stylów XSLT, i chcę wprowadzić te pliki do przeglądarki, aby przetestować plik HTML, który będzie wyświetlał. Jak to zrobić? Dziękuję Ci. – Jack

2

Można uruchomić XSL przekształca się w „normalny sposób” przy użyciu JavaScript API, lub użyć instrukcji przetwarzania xml-stylesheet, tak:

załadować do swojej przeglądarce ...

<?xml version="1.0"?> 
<?xml-stylesheet href="demo.xslt" type="text/xsl"?> 
<data> 
    <first>first</first> 
    <second>second</second> 
</data> 

i stylów, zapisz to jako demo.xslt w tym samym katalogu co Plik XML

<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
    <xsl:output method="html"/> 
    <xsl:template match="/"> 
     <html> 
      <head><title>Xslt browser demo</title></head> 
      <body> 
        Here's my data: 
       <xsl:for-each select="/data/*"><b><xsl:value-of select="."/></b></xsl:for-each> 
      </body> 
     </html> 
    </xsl:template> 
</xsl:stylesheet> 

To działa dla mnie w Firefoksie w systemie Linux.

2

Odpowiedź Dimitre jest tym, czego potrzebujesz. Ale tutaj masz przykład:

XML:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?> 
<document> 
    ... 
</document> 

Otwieranie poprzedni dokument XML w dowolny (nie bardzo, ale je dostać ...) przeglądarkę i będzie przekształcenie dokumentu XML z stylesheet.xsl i wyświetlić wynik.

To naprawdę niezły bałagan, jeśli chodzi o transformacje w przeglądarkach, złe wsparcie i tylko XSLT 1.0. Typ MIME text/xsl nie jest nawet "poprawny", ale jest najczęściej obsługiwany przez przeglądarki. Prawidłowy typ MIME powinien być application/xslt+xml, ale według mojej wiedzy nie jest to obsługiwane w żadnej (?) Przeglądarce.Zobacz komentarz Alejandros poniżej.

+0

w rzeczywistości nie ma typu MIME dla XSLT. 'application/xslt + xml' było propozycją w XSLT 2.0 WD. Tak więc, 'test/xml' lub' application/xml' (dla purist) są poprawnym typem MIME dla ** wysyłania ** arkuszy stylów XSLT. Pseudo-atrybut 'type' z' xml-stylesheet' PI jest po prostu do określenia pomiędzy 'test/css' i' test/xsl'. –

+0

@Alejandro: Masz rację, nie aktualizowałem się sam, ani nie czytałem starych rzeczy. Przepraszamy za to i dziękujemy za wyjaśnienia! –

3

Poniżej znajduje się kod Java, który jest używany do tworzenia pliku HTML. Kiedy uruchomisz ten kod, zostanie utworzony plik out.html.

package xslt; 

import javax.xml.parsers.*; 
import org.w3c.dom.*; 
import javax.xml.transform.*; 
import javax.xml.transform.dom.*; 
import javax.xml.transform.stream.*; 
import java.io.*; 


class XSLT { 
    public static void main (String argv[]) throws Exception { 
    File stylesheet = new File("xslt-example.xsl"); 
    File xmlfile = new File("SigmodRecord.xml"); 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder db = dbf.newDocumentBuilder(); 
    Document document = db.parse(xmlfile); 
    StreamSource stylesource = new StreamSource(stylesheet); 
    TransformerFactory tf = TransformerFactory.newInstance(); 
    Transformer transformer = tf.newTransformer(stylesource); 
    DOMSource source = new DOMSource(document); 
    //The Html output is in out.html 
    StreamResult result = new StreamResult("out.html"); 
    transformer.transform(source,result); 
    } 
} 
Powiązane problemy