module XsltTransform where import HdomParser import XsltDataTypes import XsltProc import XsltFunctions --import XsltValidator import XPath -- ---------------------------------------------------------------------------- xsltTransform :: String -> String -> IO() xsltTransform xslFile xmlFile = do run' $ runXsltTransform (newRoot (xattr "source" xslFile)) (newRoot (xattr "source" xmlFile)) (newRoot (xattr "source" xsltDTD)) where xsltDTD = ".\\stylesheet.dtd" runXsltTransform :: XmlTree -> XmlTree -> XmlTree -> XState state () runXsltTransform xslDatei xmlDatei xslDTD = do setBaseURI ".\\examples\\" xslRes <- (getWellformedDoc) xslDatei -- parse the xslt-document --xmlRes <- (getWellformedDoc .>> getValidatedDoc -- parse and validate the xml-document -- ) xmlDatei xmlRes <- (getWellformedDoc) xmlDatei xslDtdTree <- (getWellformedDoc) xslDTD baseUri <- getBaseURI -- Einlesen der "include"- und "import"- Dateien incl <- replaceInc 1 [baseUri] baseUri $ head xslRes imp <- replaceImp 1 [baseUri] baseUri $ head incl -- Include-Tags herausloeschen newIncl <- deleteIncludeTags $ head imp -- Importprioritaeten vergeben newImp <- makeImportPriorities $ head newIncl --f <- validateXslFile xslDtdTree newImp if null xslRes || null xmlRes || null xslDtdTree -- || null f then return () -- parse error occured else let -- XSLT-Datei xslFile = prepareXslFile newImp -- XML-Datei xmlFile = xmlRes --(stat, env,result) = xslProcessStylesheet xmlFile xslFile result = xslProcessStylesheet xmlFile xslFile ergebnis = resultNodes result fehler = errors result in io $ ( do putStrLn ("Quelldokument : " ++ (valueOf "source" xmlDatei)) putStrLn ("XSLT-Stylesheet : " ++ (valueOf "source" xslDatei)) putStrLn "transformation result :\n-----------------------" --print ergebnis putStrLn (xshow ergebnis) putStrLn "\nerrors :\n-----------------------" print fehler --putStrLn "------------" --putStrLn (xshow [xslDatei]) --putStrLn (xshow [xmlDatei]) --print (map getKeyName (keyTable env)) --putStrLn (xshow [subtreeNT (ruleBody stat)]) )