ProcessContent Attribute

The @ProcessContent attribute value contains a whitespace-delimited list of element-qualified names identifying the expanded names of elements whose content shall be processed, even if the elements themselves are ignored. In any qualified name in the list, the wildcard character “*” can replace the local name to indicate that the content all elements in the namespace shall be processed.

A markup consumer that encounters an ignored element whose expanded name matches the expanded name of an element identified in the @ProcessContent attribute value, the markup consumer shall consider that element to be a processed element, regardless of whether or not the element’s qualified name matches the qualified name specified in the @ProcessContent attribute value.

A markup consumer that encounters a processed element shall process the contents of that element as if the contents were directly embedded within the parent element of the ignored element.

The @ProcessContent attribute value shall not reference any element name that does not belong to a namespace that is identified by the @Ignorable attribute of the same element.

The value of the @ProcessContent attribute can be an empty or blank string. When a markup consumer encounters such a value, it shall proceed as if the @ProcessContent attribute was not provided.

Markup producers shall not generate an element that has an @xml:lang or @xml:space attribute if that element is identified by a @ProcessContent attribute value. Markup consumers that ignore an element that has an @xml:lang or @xml:space attribute and is also identified by a @ProcessContent attribute value shall generate an error. Markup consumers that encounter a non-ignored element that has an @xml:lang or @xml:space attribute and is also identified by a @ProcessContent attribute value might generate an error.

example:

A Version 1 markup consumer ignores the blue, black, and red circles, but does render the yellow and green circles.

<Circles
  xmlns="http://schemas.openxmlformats.org/Circles/v1"
  xmlns:mc="http://schemas.openxmlformats.org/markup-
  compatibility/2006"
  xmlns:v2="http://schemas.openxmlformats.org/Circles/v2"
  mc:Ignorable="v2"
  mc:ProcessContent="v2:Blink" >
  <v2:Watermark Opacity="v0.1">
    <Circle Center="0,0" Radius="20" Color="Blue" />
    <Circle Center="25,0" Radius="20" Color="Black" />
    <Circle Center="50,0" Radius="20" Color="Red" />
  </v2:Watermark>
  <v2:Blink>
    <Circle Center="13,0" Radius="20" Color="Yellow" />
    <Circle Center="38,0" Radius="20" Color="Green" />
  </v2:Blink>
</Circles>

The Version 1 markup consumer, unaware of Version 2 markup, renders the above markup as if it had processed the following markup:

<Circles
  xmlns="http://schemas.openxmlformats.org/Circles/v1" >
  <Circle Center="13,0" Radius="20" Color="Yellow" />
  <Circle Center="38,0" Radius="20" Color="Green" />
</Circles>