XML Validation and Digestion in Haskell

Hi.. I am currently working on a project where basically we do a lot of XML validation and digestion. For example : We recieve an XML document A, if the document passes schema validation, we do some business level validations, then from A, we create XML digests B, C and D. Our code-base is written completely in Java. We had earlier tried using XSLT, but it became too unwieldy to manage (we ended up making calls to other Java classes from the XSLT engine) The problem we are facing right now is that we have huge hierarchies of Validators, Digestors and Contexts. It just doesnt look right. I just cant help but wonder if theres a better way of doing this... I have been trying to get my hands dirty with Haskell for a couplo weeks now. all the while keeping the problem at hand in the back of my mind.. I just dont seem to be see how applying functional programming concepts can help in this scenario.. Was wondering if somebody could probably give me some pointers.. Regards Arun

On Thu, 2007-03-22 at 14:04 +0530, Arun Suresh wrote:
I am currently working on a project where basically we do a lot of XML validation and digestion. For example : We recieve an XML document A, if the document passes schema validation, we do some business level validations, then from A, we create XML digests B, C and D. Our code-base is written completely in Java. We had earlier tried using XSLT, but it became too unwieldy to manage (we ended up making calls to other Java classes from the XSLT engine)
The problem we are facing right now is that we have huge hierarchies of Validators, Digestors and Contexts. It just doesnt look right. I just cant help but wonder if theres a better way of doing this...
You're not the only one.
I have been trying to get my hands dirty with Haskell for a couplo weeks now. all the while keeping the problem at hand in the back of my mind.. I just dont seem to be see how applying functional programming concepts can help in this scenario.. Was wondering if somebody could probably give me some pointers..
Chet Murthy gave a talk on this topic at POPL this year: "Advanced Programming Languages in Enterprise Software: A lambda-calculus theorist wanders into an enterprise datacenter" The slides of the talk are available though sadly you don't get Chet's entertaining commentary. www.classes.cs.uchicago.edu/archive/2007/winter/51091-1/papers/Murthy-popl07.pdf Duncan

Hi Arun,
Your problem description seems a little vague - which is
understandable, considering how embedded in your business model it is.
As for general recommendations, I'm no guru, but I would suggest
looking at the existing XML libraries in Haskell [1], and if that's
not powerful enough, check out parsec[2] for building a custom parser.
I think to get more specific recommendations, you would need to give
more details about the problem. Hope this helps somewhat. Andrew
[1]: http://www.haskell.org/haskellwiki/Libraries_and_tools/Web_programming#XML_2
[2]: http://www.cs.uu.nl/people/daan/download/parsec/parsec.html
On 3/22/07, Arun Suresh
Hi..
I am currently working on a project where basically we do a lot of XML validation and digestion. For example : We recieve an XML document A, if the document passes schema validation, we do some business level validations, then from A, we create XML digests B, C and D. Our code-base is written completely in Java. We had earlier tried using XSLT, but it became too unwieldy to manage (we ended up making calls to other Java classes from the XSLT engine)
The problem we are facing right now is that we have huge hierarchies of Validators, Digestors and Contexts. It just doesnt look right. I just cant help but wonder if theres a better way of doing this...
I have been trying to get my hands dirty with Haskell for a couplo weeks now. all the while keeping the problem at hand in the back of my mind.. I just dont seem to be see how applying functional programming concepts can help in this scenario.. Was wondering if somebody could probably give me some pointers..
Regards Arun
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Don't spend too much time on the various libraries though. I tried some simple things with Haskell and XML, but I found it really hard to actually parse a simple document. You really don't want to write your own parser. The only tool that worked for me was HXT, which is based on arrows. These are pretty hard to grasp right away, but really powerful. I really like the way they are used in HXT, but it still feels a bit weird sometimes. Good luck, and keep us posted. -chris On Mar 22, 2007, at 7:52 AM, Andrew Wagner wrote:
Hi Arun, Your problem description seems a little vague - which is understandable, considering how embedded in your business model it is. As for general recommendations, I'm no guru, but I would suggest looking at the existing XML libraries in Haskell [1], and if that's not powerful enough, check out parsec[2] for building a custom parser. I think to get more specific recommendations, you would need to give more details about the problem. Hope this helps somewhat. Andrew
[1]: http://www.haskell.org/haskellwiki/Libraries_and_tools/ Web_programming#XML_2 [2]: http://www.cs.uu.nl/people/daan/download/parsec/parsec.html
On 3/22/07, Arun Suresh
wrote: Hi..
I am currently working on a project where basically we do a lot of XML validation and digestion. For example : We recieve an XML document A, if the document passes schema validation, we do some business level validations, then from A, we create XML digests B, C and D. Our code-base is written completely in Java. We had earlier tried using XSLT, but it became too unwieldy to manage (we ended up making calls to other Java classes from the XSLT engine)
The problem we are facing right now is that we have huge hierarchies of Validators, Digestors and Contexts. It just doesnt look right. I just cant help but wonder if theres a better way of doing this...
I have been trying to get my hands dirty with Haskell for a couplo weeks now. all the while keeping the problem at hand in the back of my mind.. I just dont seem to be see how applying functional programming concepts can help in this scenario.. Was wondering if somebody could probably give me some pointers..
Regards Arun
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
participants (4)
-
Andrew Wagner
-
Arun Suresh
-
Chris Eidhof
-
Duncan Coutts