-- | -- Format a pattern in tree representation -- module XsltToString where import XmlTree import XsltDataTypes import XPathDataTypes import XPathToString -- ----------------------------------------------------------------------------- -- | -- Format a parsed Xslt-Pattern in tree representation. -- Text output is done by 'formatNTree' -- getMatchRulesTree :: XsltMatchRules -> String getMatchRulesTree mRules = (concat (map (formatNTree id) (mrules2RuleTrees mRules)) ++ "\n") getNameRulesTree :: XsltNameRules -> String getNameRulesTree nRules = (concat (map (formatNTree id) (nrules2RuleTrees nRules)) ++ "\n") {- mruleList2RuleTrees :: [XsltMatchRules] -> XsltRuleTrees mruleList2RuleTrees rl = concat (map mrules2RuleTrees rl) -} mrules2RuleTrees :: XsltMatchRules -> XsltRuleTrees mrules2RuleTrees (MRules r) = map mrule2RuleTree r mrule2RuleTree :: (XsltStep, XsltRuleDescr) -> XsltRuleTree mrule2RuleTree (step, rd) -- = NTree "" [step2RuleTree step, body2RuleTree (body rd),parent2RuleTree (parentRules rd),ancestor2RuleTree (ancestorRules rd)] = NTree (step2String step) [step2RuleTree step, body2RuleTree (body rd),parent2RuleTree (parentRules rd),ancestor2RuleTree (ancestorRules rd)] parent2RuleTree :: XsltMatchRules -> XsltRuleTree parent2RuleTree (MRules r) = NTree "parent" (mrules2RuleTrees (MRules r)) ancestor2RuleTree :: XsltMatchRules -> XsltRuleTree ancestor2RuleTree (MRules r) = NTree "ancestor" (mrules2RuleTrees (MRules r)) body2RuleTree :: XsltRulePriList -> XsltRuleTree body2RuleTree (RulePriList pl) = NTree "bodies" (map body2RuleTree' pl) -- | -- hier wird das mode-attribute noch nicht ausgegeben --body2RuleTree' :: (Priority,XmlTrees, Mode) -> XsltRuleTree body2RuleTree' :: (Priority,[NavXmlTree], QName) -> XsltRuleTree body2RuleTree' (pri,b,_) = NTree ("Priority=" ++ (show pri)) [NTree (showXmlTrees (map subtreeNT b) "") []] pri2RuleTree :: Integer -> XsltRuleTree pri2RuleTree pri = NTree (show pri) [] step2RuleTree :: XsltStep -> XsltRuleTree step2RuleTree (XsltWildcard _ expr) = NTree "" [pred2XPathTree expr] step2RuleTree (XsltTagName _ nt expr) = NTree "" [nt2XPathTree nt ,pred2XPathTree expr] step2RuleTree _ = NTree "" [] {- step2RuleTree (XsltRoot) = NTree "Root" [] step2RuleTree (XsltWildcard coa []) = NTree "*" [] step2RuleTree (XsltWildcard coa expr) = NTree "*" [pred2XPathTree expr] step2RuleTree (XsltTagName coa nt []) = NTree (tagName2String nt) [] step2RuleTree (XsltTagName coa nt expr) = NTree (tagName2String nt) [nt2XPathTree nt ,pred2XPathTree expr] step2RuleTree (XsltIdPattern lit) = NTree ("Id('" ++ show lit ++ "')") [] step2RuleTree (XsltKeyPattern (lit1,lit2)) = NTree ("Key('" ++ show lit1 ++ "','" ++ show lit2 ++ "')") [] step2RuleTree (XsltParseError error) = NTree error [] step2RuleTree _ = NTree "" [] -- = NTree ("wildcard (*) (" ++ (show coa) ++")") [] -} tagName2String :: NodeTest -> String --tagName2String (NameTest (pre,ln)) = ln tagName2String (NameTest qn) = (localPart qn) tagName2String (PI st) = st --tagName2String (XsltTagName _ (NameTest (pre,ln)) _) = ln --tagName2String (XsltTagName _ (PI st) _) = st tagName2String _ = "" step2String :: XsltStep -> String step2String (XsltRoot) = "/" step2String (XsltWildcard _ _) = "*" step2String (XsltTagName _ nt _) = tagName2String nt step2String (XsltIdPattern lit) = ("Id('" ++ show lit ++ "')") step2String (XsltKeyPattern (lit1,lit2))= ("Key('" ++ show lit1 ++ "','" ++ show lit2 ++ "')") step2String (XsltError e) = "Xslt-Error :" ++ e ++ "\n" step2String _ = "" -- ------------------ -- | -- Format a Name-Rule in tree representation {- nruleList2RuleTrees :: [XsltNameRules] -> XsltRuleTrees nruleList2RuleTrees rl = concat (map nrules2RuleTrees rl) -} nrules2RuleTrees :: XsltNameRules -> XsltRuleTrees nrules2RuleTrees (NRules r) = map nrule2RuleTree r nrule2RuleTree :: (QName, Float, [NavXmlTree]) -> XsltRuleTree nrule2RuleTree (qn, p, b) = NTree ((namePrefix qn) ++ ":" ++ (localPart qn) ++ " (priority: " ++ (show p) ++ ")") [NTree (showXmlTrees (map subtreeNT b) "") []]