XSL transformace pomocí JavaSriptu v Mozille

by 2 contributors:

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

Original Document Information

  • Author(s): Mike Hearn
  • Last Updated Date: December 21, 2005
  • Copyright Information: Copyright (C) Mike Hearn
 

Document Tags and Contributors

Contributors to this page: teoli, Tomascejka
Last updated by: teoli,