XSLT, XPath

  • většina XSLT procesorů má API

  • transformace lze spouštět programově

  • vstup a výstup transformace nemusí být jen soubor, ale klidně DOM strom, proud událostí SAX apod.

  • některé parsery obsahují i procesor XPath a umožňují vyhodnocování výrazů nad dokumentem – velmi pohodlné pro programátora

// vytvoření XPath navigátoru pro dokument
XPathDocument doc = new XPathDocument("faktura.xml");
XPathNavigator nav = doc.CreateNavigator();

// sečtení faktury přímo pomocí XPath výrazů
double suma = (double) nav.Evaluate("sum(/faktura/polozka/cena)");
System.Console.WriteLine("Celkem Kč:  " + suma);

// vytvoření iterátoru pro všechny elementy cena
XPathNodeIterator iter = nav.Select("/faktura/polozka/cena");

// průchod vybranými uzly
while (iter.MoveNext())
{
  double sazbaDPH = Double.Parse(iter.Current.GetAttribute("dph","")) / 100;
  double castka = Double.Parse(iter.Current.Value);
  suma += castka;
  sumaDPH += sazbaDPH * castka;
}

// výpis statistiky
System.Console.WriteLine("Celkem Kč:  " + suma);
System.Console.WriteLine("Celkem DPH: " + sumaDPH);