<?xml version="1.0" encoding="utf-8"?>
<fo:root xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns:fo="http://www.w3.org/1999/XSL/Format">
  <fo:layout-master-set>
    <fo:simple-page-master master-name="simple" page-height="21cm" page-width="29.7cm" margin-left="1cm" margin-right="1cm" margin-top="2cm" margin-bottom="0.5cm">
      <fo:region-body region-name="xsl-region-body" margin-bottom="1.5cm"/>
      <fo:region-after region-name="xsl-region-after" extent="1cm"/>
    </fo:simple-page-master>
  </fo:layout-master-set>
  <fo:page-sequence master-reference="simple">
    <fo:static-content flow-name="xsl-region-after">
      <fo:block text-align="right" font-size="50%" color="grey">XML Family Diagram: <fo:page-number/>
      </fo:block>
    </fo:static-content>
    <fo:flow flow-name="xsl-region-body" font-size="70%">
      <fo:block space-after="2em" font-size="200%" font-weight="bold">XML technology relationships</fo:block>
      <fo:block align="center">
        <fo:instream-foreign-object>
          <svg:svg width="20cm" height="14.5cm" viewBox="-30 -5 170 140">
            <svg:defs>
              <svg:marker id="arrow" refX="0.5" refY="0.5" markerUnits="userSpaceOnUse" markerWidth="1" markerHeight="1" orient="auto" overflow="visible">
                <svg:path d="M0 0 1 0.5 0 1z"/>
              </svg:marker>
            </svg:defs>
            <svg:rect x="0.5" y="-1.5" width="38" height="66" style="stroke: #CCCCCC; stroke-width: 0.1; fill: #DDEEFF"/>
            <svg:text x="1.5" y="63.5" style="font-size: 1.75;">Presentation</svg:text>
            <svg:rect x="3" y="1" width="14" height="8" style="fill: #CCCCCC"/>
            <svg:rect x="2" y="0" width="14" height="8" style="stroke: black; stroke-width: 0.2;  fill: #99CCFF"/>
            <svg:text x="9" y="4" style="text-anchor: middle; font-size: 2;">XHTML</svg:text>
            <svg:path d="M 16.5 4 l 31.5 0 L 79.5 4" style="marker-mid: url(#arrow); stroke-dasharray: 0.5, 0.5; stroke: #999999; stroke-width: 0.2"/>
            <svg:rect x="3" y="14" width="14" height="8" style="fill: #CCCCCC"/>
            <svg:rect x="2" y="13" width="14" height="8" style="stroke: black; stroke-width: 0.2;  fill: #99CCFF"/>
            <svg:text x="9" y="17" style="text-anchor: middle; font-size: 2;">SVG</svg:text>
            <svg:path d="M 16.5 17 l 31.5 -6.5 L 79.5 4" style="marker-mid: url(#arrow); stroke-dasharray: 0.5, 0.5; stroke: #999999; stroke-width: 0.2"/>
            <svg:rect x="3" y="27" width="14" height="34" style="fill: #CCCCCC"/>
            <svg:rect x="2" y="26" width="14" height="34" style="stroke: black; stroke-width: 0.2;  fill: #99CCFF"/>
            <svg:text x="9" y="43" style="text-anchor: middle; font-size: 2;">XSL</svg:text>
            <svg:path d="M 16.5 43 l 3 -6.5 L 22.5 30" style="marker-mid: url(#arrow); stroke: #FF0000; stroke-width: 0.2"/>
            <svg:path d="M 16.5 43 l 3 0 L 22.5 43" style="marker-mid: url(#arrow); stroke: #FF0000; stroke-width: 0.2"/>
            <svg:path d="M 16.5 43 l 3 6.5 L 22.5 56" style="marker-mid: url(#arrow); stroke: #FF0000; stroke-width: 0.2"/>
            <svg:rect x="0.5" y="86.5" width="17" height="27" style="stroke: #CCCCCC; stroke-width: 0.1; fill: #DDEEFF"/>
            <svg:text x="1.5" y="112.5" style="font-size: 1.75;">Meta-language</svg:text>
            <svg:rect x="3" y="89" width="14" height="8" style="fill: #CCCCCC"/>
            <svg:rect x="2" y="88" width="14" height="8" style="stroke: black; stroke-width: 0.2;  fill: #99CCFF"/>
            <svg:text x="9" y="92" style="text-anchor: middle; font-size: 2;">XML Schema</svg:text>
            <svg:path d="M 16.5 92 l 31.5 -44 L 79.5 4" style="marker-mid: url(#arrow); stroke-dasharray: 0.5, 0.5; stroke: #999999; stroke-width: 0.2"/>
            <svg:rect x="3" y="102" width="14" height="8" style="fill: #CCCCCC"/>
            <svg:rect x="2" y="101" width="14" height="8" style="stroke: black; stroke-width: 0.2;  fill: #99CCFF"/>
            <svg:text x="9" y="105" style="text-anchor: middle; font-size: 2;">RDF Schema</svg:text>
            <svg:path d="M 16.5 105 l 31.5 -50.5 L 79.5 4" style="marker-mid: url(#arrow); stroke-dasharray: 0.5, 0.5; stroke: #999999; stroke-width: 0.2"/>
            <svg:path d="M 16.5 105 l 31.5 -44 L 79.5 17" style="marker-mid: url(#arrow); stroke-dasharray: 0.5, 0.5; stroke: #999999; stroke-width: 0.2"/>
            <svg:rect x="81" y="1" width="14" height="8" style="fill: #CCCCCC"/>
            <svg:rect x="80" y="0" width="14" height="8" style="stroke: black; stroke-width: 0.2;  fill: #99CCFF"/>
            <svg:text x="87" y="4" style="text-anchor: middle; font-size: 2;">XML</svg:text>
            <svg:path d="M 94.5 4 l 3 0 L 100.5 4" style="marker-mid: url(#arrow); stroke: #FF0000; stroke-width: 0.2"/>
            <svg:rect x="81" y="14" width="14" height="8" style="fill: #CCCCCC"/>
            <svg:rect x="80" y="13" width="14" height="8" style="stroke: black; stroke-width: 0.2;  fill: #99CCFF"/>
            <svg:text x="87" y="17" style="text-anchor: middle; font-size: 2;">RDF</svg:text>
            <svg:path d="M 94.5 17 l 13.5 0 L 121.5 17" style="marker-mid: url(#arrow); stroke: #FF0000; stroke-width: 0.2"/>
            <svg:path d="M 87 12.5 l 0 -2 L 87 8.5" style="marker-mid: url(#arrow); stroke-dasharray: 0.5, 0.5; stroke: #999999; stroke-width: 0.2"/>
            <svg:rect x="102" y="1" width="14" height="8" style="fill: #CCCCCC"/>
            <svg:rect x="101" y="0" width="14" height="8" style="stroke: black; stroke-width: 0.2;  fill: #99CCFF"/>
            <svg:text x="108" y="4" style="text-anchor: middle; font-size: 2;">Namespaces</svg:text>
            <svg:path d="M 115.5 4 l 3 0 L 121.5 4" style="marker-mid: url(#arrow); stroke: #FF0000; stroke-width: 0.2"/>
            <svg:rect x="24" y="27" width="14" height="8" style="fill: #CCCCCC"/>
            <svg:rect x="23" y="26" width="14" height="8" style="stroke: black; stroke-width: 0.2;  fill: #99CCFF"/>
            <svg:text x="30" y="30" style="text-anchor: middle; font-size: 2;">XSLT</svg:text>
            <svg:path d="M 37.5 30 l 21 -13 L 79.5 4" style="marker-mid: url(#arrow); stroke-dasharray: 0.5, 0.5; stroke: #999999; stroke-width: 0.2"/>
            <svg:rect x="24" y="40" width="14" height="8" style="fill: #CCCCCC"/>
            <svg:rect x="23" y="39" width="14" height="8" style="stroke: black; stroke-width: 0.2;  fill: #99CCFF"/>
            <svg:text x="30" y="43" style="text-anchor: middle; font-size: 2;">XPath</svg:text>
            <svg:rect x="24" y="53" width="14" height="8" style="fill: #CCCCCC"/>
            <svg:rect x="23" y="52" width="14" height="8" style="stroke: black; stroke-width: 0.2;  fill: #99CCFF"/>
            <svg:text x="30" y="56" style="text-anchor: middle; font-size: 2;">XSL-FO</svg:text>
            <svg:path d="M 37.5 56 l 21 -26 L 79.5 4" style="marker-mid: url(#arrow); stroke-dasharray: 0.5, 0.5; stroke: #999999; stroke-width: 0.2"/>
            <svg:rect x="123" y="1" width="14" height="21" style="fill: #CCCCCC"/>
            <svg:rect x="122" y="0" width="14" height="21" style="stroke: black; stroke-width: 0.2;  fill: #99CCFF"/>
            <svg:text x="129" y="10.5" style="text-anchor: middle; font-size: 2;">URI</svg:text>
            <svg:rect x="-30" y="0" width="22" height="17" style="fill: #FFEEDD; stroke: #999999; stroke-width: 0.2"/>
            <svg:text x="-28" y="3" style="font-size: 2; font-weight: bold">Key</svg:text>
            <svg:path d="M -28 9  L -25 9  L -22 9" style="marker-mid: url(#arrow); stroke: #FF0000; stroke-width: 0.2"/>
            <svg:path d="M -28 14 L -25 14 L -22 14" style="marker-mid: url(#arrow); stroke-dasharray: 0.5, 0.5; stroke: #999999; stroke-width: 0.2"/>
            <svg:text x="-20" y="10" style="font-size: 1.8">Has part</svg:text>
            <svg:text x="-20" y="15" style="font-size: 1.8">Conforms to</svg:text>
          </svg:svg>
        </fo:instream-foreign-object>
      </fo:block>
    </fo:flow>
  </fo:page-sequence>
</fo:root>
