<?xml version="1.0" encoding="UTF-8"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at
  
  http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!-- $Id$ -->
<document xmlns="http://xmlgraphics.apache.org/fop/intermediate"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlgraphics.apache.org/fop/intermediate fop-intermediate-format-ng.xsd"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:nav="http://xmlgraphics.apache.org/fop/intermediate/document-navigation">
  <header>
    <x:xmpmeta xmlns:x="adobe:ns:meta/">
      <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
        <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/">
          <dc:title>New Intermediate Format Demo Document</dc:title>
          <dc:creator>
            <rdf:Seq>
              <rdf:li>Jeremias Märki</rdf:li>
            </rdf:Seq>
          </dc:creator>
        </rdf:Description>
      </rdf:RDF>
    </x:xmpmeta>
    <bookmark-tree>
      <bookmark internal-destination="toc">
        <bookmark-title color="blue" font-weight="bold">Table of Contents</bookmark-title>
      </bookmark>
      <bookmark internal-destination="chapter1">
        <bookmark-title>Chapter 1</bookmark-title>
      </bookmark>
    </bookmark-tree>
  </header>
  
  <page-sequence id="ps1">
    <page index="0" name="1" width="595275" height="841889">
      <page-header>
        <ps:ps-setup-code xmlns:ps="apache:fop:extensions:postscript">%FOPTestPSSetupCode: General
          setup code here!</ps:ps-setup-code>
      </page-header>
      <content>
        <!-- Note: this is not actual content that is supposed to make any sense.
             It is merely to give you an idea what the content can look like. -->
        <viewport transform="translate(5000, 6000)" width="18000" height="10000">
          <font family="Helvetica" style="normal" weight="400" variant="normal" size="12000"
            color="black"/>
          <text x="1233" y="803">Hello</text>
          <rect x="1233" y="1200" width="20000" height="20000" fill="yellow"/>
          <viewport transform="translate(1233, 1200)" width="20000" height="20000" clip-rect="0 0 20000 20000">
            <image xlink:href="myimage.svg" x="0" y="0" width="20000" height="20000"/>
          </viewport>
        </viewport>
      </content>
      <page-trailer>
        <nav:goto-xy id="toc" page-index="0" x="1233" y="803"/>
        <nav:goto-xy id="chapter1" page-index="0" x="1233" y="1200"/>
      </page-trailer>
    </page>
  </page-sequence>
  <trailer/>
</document>
