X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.data%2Fscl%2FData%2FXML.scl;h=7f836aaa43b5abcb2da0f7428d461432b1e05ee2;hp=b49f6a6c1771ca696541f20a3ebc00844d7d6092;hb=a5a1c8cd3203e8e5743073060b2f2ea430cef86c;hpb=a8758de5bc19e5adb3f618d3038743a164f09912 diff --git a/bundles/org.simantics.scl.data/scl/Data/XML.scl b/bundles/org.simantics.scl.data/scl/Data/XML.scl index b49f6a6c1..7f836aaa4 100644 --- a/bundles/org.simantics.scl.data/scl/Data/XML.scl +++ b/bundles/org.simantics.scl.data/scl/Data/XML.scl @@ -1,122 +1,126 @@ -import "OSGi" - -importJava "org.jdom2.Document" where - data Document - - @JavaName "" - createDocument :: Element -> Document - - @JavaName getRootElement - rootElementOf :: Document -> Element - - @JavaName setRootElement - setRootElement :: Document -> Element -> () - -importJava "org.jdom2.Element" where - data Element - - @JavaName "" - createElement :: String -> Element - - @JavaName getName - nameOf :: Element -> String - - @JavaName getText - textOf :: Element -> String - - @JavaName getParentElement - parentOf :: Element -> Maybe Element - - @JavaName getChildren - childrenWithNameOf :: Element -> String -> [Element] - - @JavaName getChildren - childrenOf :: Element -> [Element] - - @JavaName getChild - childWithNameOf :: Element -> String -> Maybe Element - - @JavaName getAttributeValue - attributeOf :: Element -> String -> Maybe String - - @JavaName getAttributes - attributesOf :: Element -> [Attribute] - - @JavaName addContent - addChild :: Element -> Element -> () - - setName :: Element -> String -> () - - setText :: Element -> String -> () - - setAttribute :: Element -> String -> String -> () - -importJava "org.jdom2.Attribute" where - data Attribute - - @JavaName getValue - valueOfAttribute :: Attribute -> String - - @JavaName getName - nameOfAttribute :: Attribute -> String - -Element ?parentElement ?childName ?childElement :- - @ffb 1.0 - ?childName = nameOf ?childElement - Optional ?parentElement (parentOf ?childElement) - - @bbf 10.0 - ?childElement <- childrenWithNameOf ?parentElement ?childName - - @bff 10.0 - ?childElement <- childrenOf ?parentElement - ?childName = nameOf ?childElement - - @enforce - Execute (addNamedChild ?parentElement ?childName ?childElement) - -Attribute ?element ?attributeName ?attributeValue :- - @bbf 0.95 - Optional ?attributeValue (attributeOf ?element ?attributeName) - - @bff 4.0 - ?attribute <- attributesOf ?element - ?attributeName = nameOfAttribute ?attribute - ?attributeValue = valueOfAttribute ?attribute - - @enforce - Execute do - setAttribute ?element ?attributeName ?attributeValue - -TextContent ?element ?textContent :- - @bf 1 - ?textContent = textOf ?element - - @enforce - Execute do - setText ?element ?textContent - -XPathElement ?parentElement ?xpathExpression ?childElement :- - @bbf 10 - ?childElement <- elementsByXPath ?parentElement ?xpathExpression - -importJava "org.simantics.scl.data.xml.JDomHelper" where - parseString :: String -> Document - parseFile :: String -> Document - outputString :: Document -> String - - elementsByXPath :: Element -> String -> [Element] - addNamedChild :: Element -> String -> Element -> () - setNamespace :: Document -> String -> () - setElementNamespace :: Element -> String -> () - clearNamespace :: Document -> () - clearElementNamespace :: Element -> () - sortChildrenWith :: (Element -> Element -> Integer) -> Element -> () - - parseStringWithSchemaFile :: String -> String -> Document - //parseStringWithSchemaURL :: URL -> String -> Document - parseFileWithSchemaFile :: String -> String -> Document - //parseFileWithSchemaURL :: URL -> String -> Document - -sortChildrenBy :: Ord a => (Element -> a) -> Element -> () +import "OSGi" + +importJava "org.jdom2.Document" where + data Document + + @JavaName "" + createDocument :: Element -> Document + + @JavaName getRootElement + rootElementOf :: Document -> Element + + @JavaName setRootElement + setRootElement :: Document -> Element -> () + +importJava "org.jdom2.Element" where + data Element + + @JavaName "" + createElement :: String -> Element + + @JavaName getName + nameOf :: Element -> String + + @JavaName getText + textOf :: Element -> String + + @JavaName getParentElement + parentOf :: Element -> Maybe Element + + @JavaName getChildren + childrenWithNameOf :: Element -> String -> [Element] + + @JavaName getChildren + childrenOf :: Element -> [Element] + + @JavaName getChild + childWithNameOf :: Element -> String -> Maybe Element + + @JavaName getAttributeValue + attributeOf :: Element -> String -> Maybe String + + @JavaName getAttributes + attributesOf :: Element -> [Attribute] + + @JavaName addContent + addChild :: Element -> Element -> () + + setName :: Element -> String -> () + + setText :: Element -> String -> () + + setAttribute :: Element -> String -> String -> () + +importJava "org.jdom2.Attribute" where + data Attribute + + @JavaName getValue + valueOfAttribute :: Attribute -> String + + @JavaName getName + nameOfAttribute :: Attribute -> String + +Element ?parentElement ?childName ?childElement :- + @ffb 1.0 + ?childName = nameOf ?childElement + Optional ?parentElement (parentOf ?childElement) + + @bbf 10.0 + ?childElement <- childrenWithNameOf ?parentElement ?childName + + @bff 10.0 + ?childElement <- childrenOf ?parentElement + ?childName = nameOf ?childElement + + @enforce + Execute (addNamedChild ?parentElement ?childName ?childElement) + +Attribute ?element ?attributeName ?attributeValue :- + @bbf 0.95 + Optional ?attributeValue (attributeOf ?element ?attributeName) + + @bff 4.0 + ?attribute <- attributesOf ?element + ?attributeName = nameOfAttribute ?attribute + ?attributeValue = valueOfAttribute ?attribute + + @enforce + Execute do + setAttribute ?element ?attributeName ?attributeValue + +TextContent ?element ?textContent :- + @bf 1 + ?textContent = textOf ?element + + @enforce + Execute do + setText ?element ?textContent + +XPathElement ?parentElement ?xpathExpression ?childElement :- + @bbf 10 + ?childElement <- elementsByXPath ?parentElement ?xpathExpression + +importJava "org.simantics.scl.data.xml.JDomHelper" where + parseString :: String -> Document + parseFile :: String -> Document + outputString :: Document -> String + + elementsByXPath :: Element -> String -> [Element] + addNamedChild :: Element -> String -> Element -> () + setNamespace :: Document -> String -> () + setElementNamespace :: Element -> String -> () + clearNamespace :: Document -> () + clearElementNamespace :: Element -> () + sortChildrenWith :: (Element -> Element -> Integer) -> Element -> () + + parseStringWithSchemaFile :: String -> String -> Document + //parseStringWithSchemaURL :: URL -> String -> Document + parseFileWithSchemaFile :: String -> String -> Document + //parseFileWithSchemaURL :: URL -> String -> Document + + addCDATA :: Element -> String -> () + getCDATAs :: Element -> [String] + + +sortChildrenBy :: Ord a => (Element -> a) -> Element -> () sortChildrenBy f el = sortChildrenWith (\x y -> compare (f x) (f y)) el \ No newline at end of file