/usr/share/doc/libghc-haxml-doc/html/Text-XML-HaXml-Combinators.html is in libghc-haxml-doc 1:1.23.3-2build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Text.XML.HaXml.Combinators</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[
window.onload = function () {pageLoad();setSynopsis("mini_Text-XML-HaXml-Combinators.html");};
//]]>
</script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Text-XML-HaXml-Combinators.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">HaXml-1.23.3: Utilities for manipulating XML documents</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>Safe-Inferred</td></tr></table><p class="caption">Text.XML.HaXml.Combinators</p></div><div id="table-of-contents"><p class="caption">Contents</p><ul><li><a href="#g:1">The content filter type.
</a></li><li><a href="#g:2">Simple filters.
</a><ul><li><a href="#g:3">Selection filters.
</a></li><li><a href="#g:4">Predicate filters.
</a></li><li><a href="#g:5">Search filters.
</a></li></ul></li><li><a href="#g:6">Filter combinators
</a><ul><li><a href="#g:7">Basic combinators.
</a></li><li><a href="#g:8">Recursive search.
</a></li><li><a href="#g:9">Interior editing.
</a></li><li><a href="#g:10">Constructive filters.
</a></li></ul></li><li><a href="#g:11">C-like conditionals.
</a></li><li><a href="#g:12">Filters with labelled results.
</a><ul><li><a href="#g:13">Using and combining labelled filters.
</a></li><li><a href="#g:14">Some label-generating filters.
</a></li></ul></li></ul></div><div id="description"><p class="caption">Description</p><div class="doc"><p>This module defines the notion of filters and filter combinators
for processing XML documents.
</p><p>These XML transformation combinators are described in the paper
``Haskell and XML: Generic Combinators or Type-Based Translation?''
Malcolm Wallace and Colin Runciman, Proceedings ICFP'99.
</p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">type</span> <a href="#t:CFilter">CFilter</a> i = <a href="Text-XML-HaXml-Types.html#t:Content">Content</a> i -> [<a href="Text-XML-HaXml-Types.html#t:Content">Content</a> i]</li><li class="src short"><a href="#v:keep">keep</a> :: a -> [a]</li><li class="src short"><a href="#v:none">none</a> :: a -> [b]</li><li class="src short"><a href="#v:children">children</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:childrenBy">childrenBy</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:position">position</a> :: <a href="Text-XML-HaXml-Schema-PrimitiveTypes.html#t:Int">Int</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:elm">elm</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:txt">txt</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:tag">tag</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:attr">attr</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:attrval">attrval</a> :: <a href="Text-XML-HaXml-Types.html#t:Attribute">Attribute</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:tagWith">tagWith</a> :: (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a>) -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:find">find</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i) -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:iffind">iffind</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i) -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:ifTxt">ifTxt</a> :: (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i) -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:o">o</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:union">union</a> :: (a -> [b]) -> (a -> [b]) -> a -> [b]</li><li class="src short"><a href="#v:cat">cat</a> :: [a -> [b]] -> a -> [b]</li><li class="src short"><a href="#v:andThen">andThen</a> :: (a -> c) -> (c -> a -> b) -> a -> b</li><li class="src short"><a href="#v:-124--62--124-">(|>|)</a> :: (a -> [b]) -> (a -> [b]) -> a -> [b]</li><li class="src short"><a href="#v:with">with</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:without">without</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:-47--62-">(/>)</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:-60--47-">(</)</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:et">et</a> :: (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i) -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:path">path</a> :: [<a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i] -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:deep">deep</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:deepest">deepest</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:multi">multi</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:when">when</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:guards">guards</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:chip">chip</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:inplace">inplace</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:foldXml">foldXml</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:mkElem">mkElem</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> [<a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i] -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:mkElemAttr">mkElemAttr</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> [(<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a>, <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i)] -> [<a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i] -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:literal">literal</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:cdata">cdata</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:replaceTag">replaceTag</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:replaceAttrs">replaceAttrs</a> :: [(<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a>, <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a>)] -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><span class="keyword">data</span> <a href="#t:ThenElse">ThenElse</a> a = a <a href="#v::-62-">:></a> a</li><li class="src short"><a href="#v:-63--62-">(?>)</a> :: (a -> [b]) -> <a href="Text-XML-HaXml-Combinators.html#t:ThenElse">ThenElse</a> (a -> [b]) -> a -> [b]</li><li class="src short"><span class="keyword">type</span> <a href="#t:LabelFilter">LabelFilter</a> i a = <a href="Text-XML-HaXml-Types.html#t:Content">Content</a> i -> [(a, <a href="Text-XML-HaXml-Types.html#t:Content">Content</a> i)]</li><li class="src short"><a href="#v:oo">oo</a> :: (a -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i) -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i a -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i</li><li class="src short"><a href="#v:x">x</a> :: (<a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i a) -> (<a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i b) -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i (a, b)</li><li class="src short"><a href="#v:numbered">numbered</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i <a href="Text-XML-HaXml-Schema-PrimitiveTypes.html#t:Int">Int</a></li><li class="src short"><a href="#v:interspersed">interspersed</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a></li><li class="src short"><a href="#v:tagged">tagged</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a></li><li class="src short"><a href="#v:attributed">attributed</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a></li><li class="src short"><a href="#v:textlabelled">textlabelled</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a>)</li><li class="src short"><a href="#v:extracted">extracted</a> :: (<a href="Text-XML-HaXml-Types.html#t:Content">Content</a> i -> a) -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i a</li></ul></div><div id="interface"><h1 id="g:1">The content filter type.
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:CFilter" class="def">CFilter</a> i = <a href="Text-XML-HaXml-Types.html#t:Content">Content</a> i -> [<a href="Text-XML-HaXml-Types.html#t:Content">Content</a> i]<a href="src/Text-XML-HaXml-Combinators.html#CFilter" class="link">Source</a></p><div class="doc"><p>All document transformations are <em>content filters</em>.
A filter takes a single XML <code><a href="Text-XML-HaXml-Types.html#t:Content">Content</a></code> value and returns a sequence
of <code><a href="Text-XML-HaXml-Types.html#t:Content">Content</a></code> values, possibly empty.
</p></div></div><h1 id="g:2">Simple filters.
</h1><h2 id="g:3">Selection filters.
</h2><div class="doc"><p>In the algebra of combinators, <code>none</code> is the zero, and <code>keep</code> the identity.
(They have a more general type than just CFilter.)
</p></div><div class="top"><p class="src"><a name="v:keep" class="def">keep</a> :: a -> [a]<a href="src/Text-XML-HaXml-Combinators.html#keep" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:none" class="def">none</a> :: a -> [b]<a href="src/Text-XML-HaXml-Combinators.html#none" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:children" class="def">children</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#children" class="link">Source</a></p><div class="doc"><p>Throw away current node, keep just the (unprocessed) children.
</p></div></div><div class="top"><p class="src"><a name="v:childrenBy" class="def">childrenBy</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#childrenBy" class="link">Source</a></p><div class="doc"><p>Process children using specified filters.
</p></div></div><div class="top"><p class="src"><a name="v:position" class="def">position</a> :: <a href="Text-XML-HaXml-Schema-PrimitiveTypes.html#t:Int">Int</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#position" class="link">Source</a></p><div class="doc"><p>Select the <code>n</code>'th positional result of a filter.
</p></div></div><h2 id="g:4">Predicate filters.
</h2><div class="doc"><p>These filters either keep or throw away some content based on
a simple test. For instance, <code>elm</code> keeps only a tagged element,
<code>txt</code> keeps only non-element text, <code>tag</code> keeps only an element
with the named tag, <code>attr</code> keeps only an element with the named
attribute, <code>attrval</code> keeps only an element with the given
attribute value, <code>tagWith</code> keeps only an element whose tag name
satisfies the given predicate.
</p></div><div class="top"><p class="src"><a name="v:elm" class="def">elm</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#elm" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:txt" class="def">txt</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#txt" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:tag" class="def">tag</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#tag" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:attr" class="def">attr</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#attr" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:attrval" class="def">attrval</a> :: <a href="Text-XML-HaXml-Types.html#t:Attribute">Attribute</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#attrval" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:tagWith" class="def">tagWith</a> :: (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Bool.html#t:Bool">Bool</a>) -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#tagWith" class="link">Source</a></p></div><h2 id="g:5">Search filters.
</h2><div class="top"><p class="src"><a name="v:find" class="def">find</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i) -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#find" class="link">Source</a></p><div class="doc"><p>For a mandatory attribute field, <code>find key cont</code> looks up the value of
the attribute name <code>key</code>, and applies the continuation <code>cont</code> to
the value.
</p></div></div><div class="top"><p class="src"><a name="v:iffind" class="def">iffind</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i) -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#iffind" class="link">Source</a></p><div class="doc"><p>When an attribute field may be absent, use <code>iffind key yes no</code> to lookup
its value. If the attribute is absent, it acts as the <code>no</code> filter,
otherwise it applies the <code>yes</code> filter.
</p></div></div><div class="top"><p class="src"><a name="v:ifTxt" class="def">ifTxt</a> :: (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i) -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#ifTxt" class="link">Source</a></p><div class="doc"><p><code>ifTxt yes no</code> processes any textual content with the <code>yes</code> filter,
but otherwise is the same as the <code>no</code> filter.
</p></div></div><h1 id="g:6">Filter combinators
</h1><h2 id="g:7">Basic combinators.
</h2><div class="top"><p class="src"><a name="v:o" class="def">o</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#o" class="link">Source</a></p><div class="doc"><p>Sequential (<em>Irish</em>,<em>backwards</em>) composition
</p></div></div><div class="top"><p class="src"><a name="v:union" class="def">union</a> :: (a -> [b]) -> (a -> [b]) -> a -> [b]<a href="src/Text-XML-HaXml-Combinators.html#union" class="link">Source</a></p><div class="doc"><p>Binary parallel composition. Each filter uses a copy of the input,
rather than one filter using the result of the other.
(Has a more general type than just CFilter.)
</p></div></div><div class="top"><p class="src"><a name="v:cat" class="def">cat</a> :: [a -> [b]] -> a -> [b]<a href="src/Text-XML-HaXml-Combinators.html#cat" class="link">Source</a></p><div class="doc"><p>Glue a list of filters together. (A list version of union;
also has a more general type than just CFilter.)
</p></div></div><div class="top"><p class="src"><a name="v:andThen" class="def">andThen</a> :: (a -> c) -> (c -> a -> b) -> a -> b<a href="src/Text-XML-HaXml-Combinators.html#andThen" class="link">Source</a></p><div class="doc"><p>A special form of filter composition where the second filter
works over the same data as the first, but also uses the
first's result.
</p></div></div><div class="top"><p class="src"><a name="v:-124--62--124-" class="def">(|>|)</a> :: (a -> [b]) -> (a -> [b]) -> a -> [b]<a href="src/Text-XML-HaXml-Combinators.html#%7C%3E%7C" class="link">Source</a></p><div class="doc"><p>Directional choice:
in <code>f |>| g</code> give g-productions only if no f-productions
</p></div></div><div class="top"><p class="src"><a name="v:with" class="def">with</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#with" class="link">Source</a></p><div class="doc"><p>Pruning: in <code>f <code><a href="Text-XML-HaXml-Combinators.html#v:with">with</a></code> g</code>,
keep only those f-productions which have at least one g-production
</p></div></div><div class="top"><p class="src"><a name="v:without" class="def">without</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#without" class="link">Source</a></p><div class="doc"><p>Pruning: in <code>f <code><a href="Text-XML-HaXml-Combinators.html#v:without">without</a></code> g</code>,
keep only those f-productions which have no g-productions
</p></div></div><div class="top"><p class="src"><a name="v:-47--62-" class="def">(/>)</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#%2F%3E" class="link">Source</a></p><div class="doc"><p>Pronounced <em>slash</em>, <code>f /> g</code> means g inside f
</p></div></div><div class="top"><p class="src"><a name="v:-60--47-" class="def">(</)</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#%3C%2F" class="link">Source</a></p><div class="doc"><p>Pronounced <em>outside</em>, <code>f </ g</code> means f containing g
</p></div></div><div class="top"><p class="src"><a name="v:et" class="def">et</a> :: (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i) -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#et" class="link">Source</a></p><div class="doc"><p>Join an element-matching filter with a text-only filter
</p></div></div><div class="top"><p class="src"><a name="v:path" class="def">path</a> :: [<a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i] -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#path" class="link">Source</a></p><div class="doc"><p>Express a list of filters like an XPath query, e.g.
<code>path [children, tag "name1", attr "attr1", children, tag "name2"]</code>
is like the XPath query <code>/name1[@attr1]/name2</code>.
</p></div></div><h2 id="g:8">Recursive search.
</h2><div class="doc"><p>Recursive search has three variants: <code>deep</code> does a breadth-first
search of the tree, <code>deepest</code> does a depth-first search, <code>multi</code> returns
content at all tree-levels, even those strictly contained within results
that have already been returned.
</p></div><div class="top"><p class="src"><a name="v:deep" class="def">deep</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#deep" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:deepest" class="def">deepest</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#deepest" class="link">Source</a></p></div><div class="top"><p class="src"><a name="v:multi" class="def">multi</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#multi" class="link">Source</a></p></div><h2 id="g:9">Interior editing.
</h2><div class="top"><p class="src"><a name="v:when" class="def">when</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#when" class="link">Source</a></p><div class="doc"><p>Interior editing:
<code>f <code><a href="Text-XML-HaXml-Combinators.html#v:when">when</a></code> g</code> applies <code>f</code> only when the predicate <code>g</code> succeeds,
otherwise the content is unchanged.
</p></div></div><div class="top"><p class="src"><a name="v:guards" class="def">guards</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#guards" class="link">Source</a></p><div class="doc"><p>Interior editing:
<code>g <code><a href="Text-XML-HaXml-Combinators.html#v:guards">guards</a></code> f</code> applies <code>f</code> only when the predicate <code>g</code> succeeds,
otherwise the content is discarded.
</p></div></div><div class="top"><p class="src"><a name="v:chip" class="def">chip</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#chip" class="link">Source</a></p><div class="doc"><p>Process CHildren In Place. The filter is applied to any children
of an element content, and the element rebuilt around the results.
</p></div></div><div class="top"><p class="src"><a name="v:inplace" class="def">inplace</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#inplace" class="link">Source</a></p><div class="doc"><p>Process an element In Place. The filter is applied to the element
itself, and then the original element rebuilt around the results.
</p></div></div><div class="top"><p class="src"><a name="v:foldXml" class="def">foldXml</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#foldXml" class="link">Source</a></p><div class="doc"><p>Recursive application of filters: a fold-like operator. Defined
as <code>f <code><a href="Text-XML-HaXml-Combinators.html#v:o">o</a></code> chip (foldXml f)</code>.
</p></div></div><h2 id="g:10">Constructive filters.
</h2><div class="top"><p class="src"><a name="v:mkElem" class="def">mkElem</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> [<a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i] -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#mkElem" class="link">Source</a></p><div class="doc"><p>Build an element with the given tag name - its content is the results
of the given list of filters.
</p></div></div><div class="top"><p class="src"><a name="v:mkElemAttr" class="def">mkElemAttr</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> [(<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a>, <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i)] -> [<a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i] -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#mkElemAttr" class="link">Source</a></p><div class="doc"><p>Build an element with the given name, attributes, and content.
</p></div></div><div class="top"><p class="src"><a name="v:literal" class="def">literal</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#literal" class="link">Source</a></p><div class="doc"><p>Build some textual content.
</p></div></div><div class="top"><p class="src"><a name="v:cdata" class="def">cdata</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#cdata" class="link">Source</a></p><div class="doc"><p>Build some CDATA content.
</p></div></div><div class="top"><p class="src"><a name="v:replaceTag" class="def">replaceTag</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#replaceTag" class="link">Source</a></p><div class="doc"><p>Rename an element tag (leaving attributes in place).
</p></div></div><div class="top"><p class="src"><a name="v:replaceAttrs" class="def">replaceAttrs</a> :: [(<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a>, <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a>)] -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#replaceAttrs" class="link">Source</a></p><div class="doc"><p>Replace the attributes of an element (leaving tag the same).
</p></div></div><h1 id="g:11">C-like conditionals.
</h1><div class="doc"><p>These definitions provide C-like conditionals, lifted to the filter level.
</p><p>The <code>(cond ? yes : no)</code> style in C becomes <code>(cond ?> yes :> no)</code> in Haskell.
</p></div><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:ThenElse" class="def">ThenElse</a> a <a href="src/Text-XML-HaXml-Combinators.html#ThenElse" class="link">Source</a></p><div class="doc"><p>Conjoin the two branches of a conditional.
</p></div><div class="subs constructors"><p class="caption">Constructors</p><table><tr><td class="src">a <a name="v::-62-" class="def">:></a> a</td><td class="doc empty"> </td></tr></table></div></div><div class="top"><p class="src"><a name="v:-63--62-" class="def">(?>)</a> :: (a -> [b]) -> <a href="Text-XML-HaXml-Combinators.html#t:ThenElse">ThenElse</a> (a -> [b]) -> a -> [b]<a href="src/Text-XML-HaXml-Combinators.html#%3F%3E" class="link">Source</a></p><div class="doc"><p>Select between the two branches of a joined conditional.
</p></div></div><h1 id="g:12">Filters with labelled results.
</h1><div class="top"><p class="src"><span class="keyword">type</span> <a name="t:LabelFilter" class="def">LabelFilter</a> i a = <a href="Text-XML-HaXml-Types.html#t:Content">Content</a> i -> [(a, <a href="Text-XML-HaXml-Types.html#t:Content">Content</a> i)]<a href="src/Text-XML-HaXml-Combinators.html#LabelFilter" class="link">Source</a></p><div class="doc"><p>A LabelFilter is like a CFilter except that it pairs up a polymorphic
value (label) with each of its results.
</p></div></div><h2 id="g:13">Using and combining labelled filters.
</h2><div class="top"><p class="src"><a name="v:oo" class="def">oo</a> :: (a -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i) -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i a -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i<a href="src/Text-XML-HaXml-Combinators.html#oo" class="link">Source</a></p><div class="doc"><p>Compose a label-processing filter with a label-generating filter.
</p></div></div><div class="top"><p class="src"><a name="v:x" class="def">x</a> :: (<a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i a) -> (<a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i b) -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i (a, b)<a href="src/Text-XML-HaXml-Combinators.html#x" class="link">Source</a></p><div class="doc"><p>Combine labels. Think of this as a pair-wise zip on labels.
e.g. <code>(numbered <code><a href="Text-XML-HaXml-Combinators.html#v:x">x</a></code> tagged)</code>
</p></div></div><h2 id="g:14">Some label-generating filters.
</h2><div class="top"><p class="src"><a name="v:numbered" class="def">numbered</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i <a href="Text-XML-HaXml-Schema-PrimitiveTypes.html#t:Int">Int</a><a href="src/Text-XML-HaXml-Combinators.html#numbered" class="link">Source</a></p><div class="doc"><p>Number the results from 1 upwards.
</p></div></div><div class="top"><p class="src"><a name="v:interspersed" class="def">interspersed</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a><a href="src/Text-XML-HaXml-Combinators.html#interspersed" class="link">Source</a></p><div class="doc"><p>In <code>interspersed a f b</code>, label each result of <code>f</code> with the string <code>a</code>,
except for the last one which is labelled with the string <code>b</code>.
</p></div></div><div class="top"><p class="src"><a name="v:tagged" class="def">tagged</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a><a href="src/Text-XML-HaXml-Combinators.html#tagged" class="link">Source</a></p><div class="doc"><p>Label each element in the result with its tag name. Non-element
results get an empty string label.
</p></div></div><div class="top"><p class="src"><a name="v:attributed" class="def">attributed</a> :: <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a> -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a><a href="src/Text-XML-HaXml-Combinators.html#attributed" class="link">Source</a></p><div class="doc"><p>Label each element in the result with the value of the named attribute.
Elements without the attribute, and non-element results, get an
empty string label.
</p></div></div><div class="top"><p class="src"><a name="v:textlabelled" class="def">textlabelled</a> :: <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i (<a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-Maybe.html#t:Maybe">Maybe</a> <a href="/usr/share/doc/ghc-doc/html/libraries/base-4.6.0.1/Data-String.html#t:String">String</a>)<a href="src/Text-XML-HaXml-Combinators.html#textlabelled" class="link">Source</a></p><div class="doc"><p>Label each textual part of the result with its text. Element
results get an empty string label.
</p></div></div><div class="top"><p class="src"><a name="v:extracted" class="def">extracted</a> :: (<a href="Text-XML-HaXml-Types.html#t:Content">Content</a> i -> a) -> <a href="Text-XML-HaXml-Combinators.html#t:CFilter">CFilter</a> i -> <a href="Text-XML-HaXml-Combinators.html#t:LabelFilter">LabelFilter</a> i a<a href="src/Text-XML-HaXml-Combinators.html#extracted" class="link">Source</a></p><div class="doc"><p>Label each content with some information extracted from itself.
</p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.13.2</p></div></body></html>
|