HXT followingSiblingAxis && transform on this and the thing before
Hello, I'd like to move around and transform some nodes in the following structure: <vol> <col pg="1" s="a"/> <art><p>Text of article 1</p></art> <art><p>Text of article 2</p></art> <col pg="1" s="b"/> <art><p>Text of article 3</p></art> <art><p>Text of article 4</p></art> </vol> Namely, I want to move COL in between each of the next two (or more) ART-Tags (<art><col../>...</art>. (So maybe "move" is the wrong word. I want to cut COL and paste it in multiple ART-Tags.) Plus when moving one COL in, I'd like to give the corresponding ART a new attribute with a counter (n="[1..]"), so that the articles in one column are numbered. So, to begin with, how do I get a COL-milestone together with the following ARTs (but of course without the next COL) ? (if that's the right way to do what I want to do..) I tried this: {-# LANGUAGE TupleSections, Arrows, NoMonomorphismRestriction #-} import Text.XML.HXT.Core import Control.Arrow.ArrowNavigatableTree file = "../auswahl_few16.xml" main = do runX (configSysVars [withCanonicalize no, withValidate no, withTrace 0, withParseHTML no] >>> readDocument [withErrors no, withWarnings no] file //> hasName "col" >>> addNav >>> followingSiblingAxis >>> remNav >>> putXmlTree "-") Which gives me an empty list. Then this: //> (hasName "col" <+> (addNav >>> followingSiblingAxis >>> remNav)) >>> putXmlTree "-" And there are my old results for COL, but again nothing for the siblings. In fact, it seems I have no clue, how to use followingSiblingAxis, and then again if it worked out, I'm not sure if my selection really is the one I need (maybe I get the siblings then only -- without the COL?). UPDATE: Thanks to this SO-Question (http://stackoverflow.com/questions/4767430/xpath-axis-get-all-following-node...), using hxt-xpath I was able to evaluate (//col)[1]/following-sibling::art [1 = count (preceding-sibling::col[1] | (//col)[1])] to the first pair of ART-siblings. So that's very nice, but again not really what I want. I want to process every COL with its siblings and I hope HXT-Arrows offers a somewhat elegant solution to this. Thanks in advance, René T.
participants (1)
-
Rene@gmail