diff --git a/docs/src/site/docbook/reference/infrastructure.xml b/docs/src/site/docbook/reference/infrastructure.xml
index fb8caa5e8..4baa8d25a 100644
--- a/docs/src/site/docbook/reference/infrastructure.xml
+++ b/docs/src/site/docbook/reference/infrastructure.xml
@@ -714,50 +714,88 @@
-->
-
-
- XML Item Readers and Writers
- Spring Batch provides transactional infrastructure for both
- reading XML records and mapping them to Java objects as well as writing
- Java objects as XML records.
+
+ XML Item Readers and Writers
+
+ Spring Batch provides transactional infrastructure for both reading
+ XML records and mapping them to Java objects as well as writing Java
+ objects as XML records.
+
+
+ Constraints on streaming XML
StAX API is used for I/O as other standard XML APIs do not fit
batch processing requirements (DOM loads the whole input into memory at
once and SAX controls the parsing process allowing the user only to
provide callbacks).
+
- Spring Batch is not tied to any particular OXM technology. Typical
- use is to delegate OXM to Spring WS which provides uniform abstraction
- for the most popular OXM technologies. However dependency on Spring WS
- is optional and you can choose to implement Spring Batch specific
- interfaces if desired.
+ Spring Batch is not tied to any particular OXM technology. Typical
+ use is to delegate OXM
+ to Spring WS, which provides uniform abstraction for
+ the most popular OXM technologies. However dependency on Spring WS is
+ optional and you can choose to implement Spring Batch specific interfaces
+ if desired. The relationship to the technologies that OXM supports can be
+ shown as the following:
- Lets take a closer look how XML input and output work in batch. It
- is assumed the XML resource is a collection of 'fragments' corresponding
- to individual records. Note that OXM tools are designed to work with
- standalone XML documents rather than XML fragments cut out of an XML
- document, therefore the Spring Batch infrastructure needs to work around
- this fact (as described below).
+
+
+
+
- On input the reader reads the XML resource until it recognizes a
- new fragment is about to start (by matching the tag name by default).
- The reader creates a standalone XML document from the fragment (or at
- least makes it appear so) and passes the document to a deserializer
- (typically a wrapper around Spring WS Unmarshaller) to map the XML to a
- Java object.
+
+
+
- Output works symetrically to input. Java object is passed to a
- serializer (typically a wrapper around Spring WS Marshaller) which
- writes to output using a custom event writer that filters the
- StartDocument and EndDocument events produced for each fragment by the
- OXM tools.
+ Figure X: OXM Binding
+
- For example configuration of XML input and output see the sample
- xmlStaxJob. //TODO inline the example once it is not subject to change +
- show sample input file
-
+ Lets take a closer look how XML input and output work in batch. It
+ is assumed the XML resource is a collection of 'fragments' corresponding
+ to individual records. Note that OXM tools are designed to work with
+ standalone XML documents rather than XML fragments cut out of an XML
+ document, therefore the Spring Batch infrastructure needs to work around
+ this fact (as described below).
+
+ On input the reader reads the XML resource until it recognizes a new
+ fragment is about to start (by matching the tag name by default). The
+ reader creates a standalone XML document from the fragment (or at least
+ makes it appear so) and passes the document to a deserializer (typically a
+ wrapper around Spring WS Unmarshaller) to map the XML to a Java
+ object.
+
+
+
+
+
+
+
+
+
+
+ Figure X: XML Inputs
+
+
+ Output works symetrically to input. Java object is passed to a
+ serializer (typically a wrapper around Spring WS Marshaller) which writes
+ to output using a custom event writer that filters the StartDocument and
+ EndDocument events produced for each fragment by the OXM tools.
+
+ For example configuration of XML input and output see the sample
+ xmlStaxJob. //TODO inline the example once it is not subject to change +
+ show sample input file
+
Item Writers
diff --git a/docs/src/site/resources/reference/images/oxm-fragments.png b/docs/src/site/resources/reference/images/oxm-fragments.png
new file mode 100755
index 000000000..f77af97e7
Binary files /dev/null and b/docs/src/site/resources/reference/images/oxm-fragments.png differ
diff --git a/docs/src/site/resources/reference/images/xmlinput.png b/docs/src/site/resources/reference/images/xmlinput.png
new file mode 100755
index 000000000..f270346c2
Binary files /dev/null and b/docs/src/site/resources/reference/images/xmlinput.png differ