Tento dokument popisuje Javascript interface v Mozilla 1.2+ XSLT Processing Engine (TransforMiiX).
Vytvoření XSLTProcessor
Na začátku musíme vytvořit XSLTProcessor objekt:
var processor = new XSLTProcessor();
Specifikace stylopisu
Dříve než můžete XSLTProcessor objekt vůbec použít, musíte naimportovat XSLT stylopis pomocí importStylesheet()
funkce. Má jediný parametr, kterým je DOM uzel stylopisu, který importujeme. Pozn. import je
živí
, což znamená, že když změníte DOM stylopisu po importu, odrazí se tato změna ve zpracování. Nicméně, je doporučeno použít stylopis namísto modifikace DOMu. Je to obvykle snazší a poskytuje to lepší výkon.
var testTransform = document.implementation.createDocument("", "test", null); // just an example to get a transform into a script as a DOM // XMLDocument.load is asynchronous, so all processing happens in the // onload handler testTransform.addEventListener("load", onload, false); testTransform.load("test-transform.xml"); function onload() { processor.importStylesheet(testTransform); }
importStylesheet
požaduje jediný argument DOM uzel. Jestliže tímto uzlem je kořenový element (document node) dojde k celkové XSL transformaci, anebo k transformaci doslovně výstupních elementů, jinak to musí být vždy <tt>xsl:stylesheet</tt> nebo <tt>xsl:transform</tt> element.
Transformace dokumentu
K transformaci dokumentu můžete použít tyto metody transformToDocument()
nebo transformToFragment()
za použití importovaného XSLT stylopisu.
transformToDocument
transformToDocument()
přijímá jediný argument, zdrojový uzel, který má být transformován a vratí DOM Document
s výsledkem transformace.
var newDocument = processor.transformToDocument(domToBeTransformed);
Výsledný objekt je HTMLDocument
, jestliže output element deklarovaný v XSL stylopisu definuje atribut type s hodnotou <tt>html</tt>, XMLDocument
samozřejmě s hodnotou <tt>xml</tt> a pro prostý text <tt>text</tt> je to XMLDocument
s jediným uzlem, který je zároveň kořenovým elementem <transformiix:result>
s textem, který je jeho potomkem.
transformToFragment
Také můžete použít transformToFragment()
, která vrací objekt DOM DocumentFragment
. Je to užitečné, protože napojení fragmentu do jiného uzlu transparentně vkláda všechny potomky uzlu, a samotný fragment není s uzlem sloučen. Fragmenty jsou tudíž velmi užitečné pro přesun a uložení uzlů bez toho, aniž by byly pověšeny nad celým
document
objektem.
transformToFragment
přijímá dva argumenty: zdrojový dokument, který má být transformován (as above) a Document
objekt, který bude vlastnit tento fragment (všechny fragmenty musejí mít owner document).
var ownerDocument = document.implementation.createDocument("", "test", null); var newFragment = processor.transformToFragment(domToBeTransformed, ownerDocument);
Výstupem transformToFragment
budou HTML DOM objekty právě tehdy, když jsou vlastněny dokumentem, který je sám HTMLDocument
dokumentem, nebo jestliže output element XSLT stylopisu je HTML. Ale nebude vytvářet HTML DOM objekty, v případě, že jediným nejvyšším elementem ve výsledku je samotný <html>
, protože transformToFragment
je zřídka kdy používána k vytváření tohoto elementu. Pakliže toto chcete překrýt, můžete nastavit element output normálně standartní cestou.
transformace HTML
Bohužel nyní není podporována transformace HTML uzlů použitím XSLT. Některé věcí fungují, pakliže použijete malé písmena v názvech uzlů ve vzorech a výrazech, a zpracování uzlů, jestliže jsou v null namespace , nicméně není to ještě pořádně otestováno, takže to nemusí platit ve všech situacích. Je také možné, že toto bude změněno v budoucích vydáních.
Transformace XHTML je očekávana.
Nastavení parametrů
Můžete kontrolovat parametry pro stylopis použitím setParameter
, getParameter
, a removeParameter
method. Všechny očekávají v prvních parametrech namespace URI a local-name, v setParameter
je očekávám ještě třetí parametr - hodnota tohoto parametru musí být nastavena. Viz např. XSLT/JavaScript Interface in Gecko.
Resetting
Objekt XSLTProcessor
také implementuje reset()
methodu, která může být použita k odstranění všech stylopisu a parametrů potom je procesor vrácen do svého výchozího stavu. Tato metoda je implementována v Mozilla 1.3 a vyšší.
Zdroje
- nsIXSLTProcessor.idl zobrazuje vždy aktuální interface
XSLTProcessor
objektu - The nsIXMLProcessorObsolete IDL file : the JS interface in Mozilla versions prior to 1.2.
Original Document Information
- Author(s): Mike Hearn
- Last Updated Date: December 21, 2005
- Copyright Information: Copyright (C) Mike Hearn