@@ -16,6 +16,7 @@ module Text.XML.Lens (
16 -- ** Names
16 -- ** Names
19 -- ** Attributes
20 -- ** Attributes
20 , attributeIs
21 , attributeIs
21 , attributeSatisfies
22 , attributeSatisfies
@@ -45,6 +46,9 @@ module Text.XML.Lens (
45 -- * Lenses for 'Instruction'
46 -- * Lenses for 'Instruction'
46 , _instructionTarget
47 , _instructionTarget
47 , _instructionData
48 , _instructionData
50+ , module Control.Lens
49import Text.XML
53import Text.XML
50import Control.Lens
54import Control.Lens
@@ -136,7 +140,7 @@ attribute n = attrs . at n
136-- | Traverse itself with its all children.
140-- | Traverse itself with its all children.
137entire :: Traversal' Element Element
141entire :: Traversal' Element Element
138entire f e@(Element _ _ ns) = com <$> f e <*> traverse (_Element (entire f)) ns where
142entire f e@(Element _ _ ns) = com <$> f e <*> traverse (_Element (entire f)) ns where
139− com (Element n a _) ns = Element n a ns
143+ com (Element n a _) = Element n a
141-- | Traverse elements which has the specified name.
145-- | Traverse elements which has the specified name.
142el :: Name -> Traversal' Element Element
146el :: Name -> Traversal' Element Element
@@ -144,6 +148,12 @@ el n f s
144 | elementName s == n = f s
148 | elementName s == n = f s
145 | otherwise = pure s
149 | otherwise = pure s
151+-- | Traverse elements which has the specified *local* name.
152+ell :: Text -> Traversal' Element Element
154+ | nameLocalName (elementName s) == n = f s
155+ | otherwise = pure s
147attributeSatisfies :: Name -> (Text -> Bool) -> Traversal' Element Element
157attributeSatisfies :: Name -> (Text -> Bool) -> Traversal' Element Element
148attributeSatisfies n p = filtered (maybe False p . preview (attrs . ix n))
158attributeSatisfies n p = filtered (maybe False p . preview (attrs . ix n))