第7章 Markup Compatibility and Extensibility

対応していない名前空間の処理方法を指定する

mc:Ignorableに指定された名前空間のXML構造にアプリケーションが対応していないとき、通常その要素の子孫(サブツリー)は無視されます。

無視される名前空間の要素のサブツリーに、処理すべき名前空間の要素があるときこの要素は処理したいときに有用なのが、ProcessContentです。

mc:ProcessContent

mc:Ignorableに指定された名前空間にアプリケーションが対応していないとき、mc:ProcessContentに指定された要素のサブツリーは、その要素が存在しない形に再構成されます。

拡張の名前空間の要素が通常の名前空間の要素をグルーピングしているような箇所での処理が想定されています。

ProcessContentのあるWordprocessingML文書
<w:document ... mc:Ignorable="antenna" mc:ProcessContent="antenna:rWrap">
  ...
    <w:p ...>
      <w:pPr ...>
        ...
      <w:pPr ...>
      ...
    ...
    <antenna:rWrap>
      <w:r>
      ...
        <w:t ...>拡張テキスト</w:t>
      </w:r>
    </antenna:rWrap>
    <w:r>
    ...
    <w:t ...>拡張でないテキスト</w:t>
    </w:r>
  </w:p>
</w:document>

名前空間antenna非対応のアプリケーションで開かれた際通常の名前空間の要素・属性は残したい場合に、mc:Ignorableに加えてmc:ProcessContentに要素を指定します。

MCEを処理したWordprocessingML文書
<w:document ... >
  ...
    <w:p ...>
      <w:pPr ...>
        ...
      <w:pPr ...>
      ...
    ...
      <w:r>
      ...
        <w:t ...>拡張テキスト</w:t>
      </w:r>
    <w:r>
    ...
    <w:t ...>拡張でないテキスト</w:t>
    </w:r>
  </w:p>
</w:document>

AlternateContent、Choice、Fallback

アプリケーションが拡張に対応している場合の処理と、対応していない場合の代替処理を指定できます。

mc:AlternateContent要素の子要素として、アプリケーションが対応可能な拡張の名前空間があるときの処理をmc:Choice要素の子孫に、対応可能な名前空間がないときの処理をmc:Fallback要素の子孫に記述できます。

AlternateContent、Choice、Fallback
<mc:AlternateContent>
  <mc:Choice require="">
    ...
  </mc:Choice>
  <mc:Fallback>
    ...
  </mc:Fallback>
</mc:AlternateContent>

Choice要素のrequire属性に拡張の名前空間を指定します。WordではDrawingMLに対応していないアプリケーション用にVMLの処理をFallbackに指定するといった使われ方をしています。