[Haskell-cafe] A long day with HXT

Uwe Schmidt uwe at fh-wedel.de
Mon May 9 15:27:36 CEST 2011

Hi Henry,

> I have just spent many hours staring at code and losing some hair.  My
> hope is to save you the same experience someday.  Here was my goal:
> Take some XML, like <photo url="somewhere" align="left" alt=""/> and
> replace the align attribute with a class attribute, but only if the
> value of the align attribute was not null.  This led to to followed
> (hugely condensed) attempts:

you could try the following:


module Align where

import Text.XML.HXT.Core

doc = concat $
      [ "<collection>"
      , "<photo url='somewhere' align='left' alt=''/>"
      , "<photo url='somewhere' align='' alt=''/>"
      , "</collection>"

main =
 runX ( constA doc
	readFromString []
	writeDocument [withIndent yes] ""
	writeDocument [withIndent yes] ""

    = processTopDownUntil
      (isPhotoWithNonEmptyAlign `guards` addClassAttr)

    = hasName "photo"
      hasAttrValue "align" (not .null)

    = addAttr "class" "someclass"
      removeAttr "align"




More information about the Haskell-Cafe mailing list