A markup sink consumes a markup stream; that is, a stream of data content that includes markup events.
markup sink is a subtype of string sink; therefore, a markup sink can be used anywhere a
string sink could be used.
Generally speaking, all actions and operators that work with string sink will also work with
markup sink. There are a few things to keep in mind, however:
put action that has a markup sink as its left hand argument can have either a
markup sink or a string sink as its right hand argument. If the left hand argument is a string sink, though, then the right hand argument must also be a string sink.
output-to action accepts a markup sink as well as a string
sink with the same restrictions on scope-escaping.
close, discard, and flush behave the same way on a
markup sink as they would on a string sink. None of these actions works on a value argument.
&) can be used with markup sink arguments. If both arguments have
markup sink type, then the result is also a markup sink. If one argument is a
string sink, then the result is also a string sink.
&, and, will accept markup sink arguments because they
are a subtype of string sink. However, the result is always a string
sink.
string sink argument will also accept a markup
sink in that position.
markup sink cast operator that tries to invoke an appropriate user-defined
conversion function.