
On 01/04/2015 06:15 PM, Jimmy Lu wrote:
Hi,
With xml element having DTD like following:
<!ELEMENT entry ((art*, formula?, table?), hw, hsl?, (pr | altpr)?, (ahw, hsl?, (pr | altpr)?)*, vr?, fl?, lb*, in*, ((dx) | (cx?, def?))?, dro*, dxnl*, uro*, syns*)>
I want to unpickle the sequence
hw, hsl?, (pr | altpr)?, (ahw, hsl?, (pr | altpr)?)*
into Haskell data type [Headword] where
Are you asking how to extract ONLY that sequence? If so, it's not possible: you have to provide a pickler/unpickler for the whole thing, and then ignore the parts you don't want. That aside, you might not want to make a list out of the elements you've shown. That's a sequence of a fixed number of heterogeneous things. The first one is an "hw", the second is an "(optional) hsl", the third is an "(optional) pr or altpr",... The last expression with the star is what you'd want to (un)pickle into a list.