<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
		targetNamespace="http://www.phpgedview.net" 
		xmlns="http://www.phpgedview.net" 
		elementFormDefault="qualified">
  <xs:element name="PGVReport">
    <xs:complexType>
      <xs:sequence>
        <xs:choice maxOccurs="unbounded">
          <xs:element name="PGVRTitle">
            <xs:complexType mixed="true">
              <xs:sequence>
                <xs:element ref="PGVRvar" maxOccurs="unbounded" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="PGVRDescription">
            <xs:complexType mixed="true">
              <xs:sequence>
                <xs:element ref="PGVRvar" maxOccurs="unbounded" minOccurs="0" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
          <xs:element name="PGVRInput">
            <xs:complexType mixed="true">
              <xs:sequence>
                <xs:element ref="PGVRvar" maxOccurs="unbounded" minOccurs="0" />
              </xs:sequence>
              <xs:attribute name="name" type="xs:string" use="required" />
              <xs:attribute name="lookup" type="xs:string" use="optional" />
              <xs:attribute name="type" type="xs:string" use="required" />
              <xs:attribute name="default" type="xs:string" use="optional" />
              <xs:attribute name="options" type="xs:string" use="optional" />
            </xs:complexType>
          </xs:element>
          <xs:element name="PGVRStyle">
            <xs:complexType>
              <xs:attribute name="name" type="xs:string" use="required" />
              <xs:attribute name="font" type="xs:string" use="required" />
              <xs:attribute name="size" type="xs:unsignedByte" use="required" />
              <xs:attribute name="style" type="xs:string" use="optional" />
            </xs:complexType>
          </xs:element>
          <xs:element name="PGVRDoc" minOccurs="1" maxOccurs="1">
            <xs:complexType>
              <xs:sequence>
                <xs:choice maxOccurs="unbounded">
                  <xs:element ref="PGVRif" minOccurs="0" maxOccurs="unbounded"/>
                  <xs:element ref="PGVRSetVar" minOccurs="0" maxOccurs="unbounded"/>
                  <xs:element ref="PGVRHeader" minOccurs="1" maxOccurs="1"/>
                  <xs:element ref="PGVRBody" minOccurs="1" maxOccurs="1"/>
                  <xs:element ref="PGVRFooter" minOccurs="1" maxOccurs="1"/>
                </xs:choice>
              </xs:sequence>
              <xs:attribute name="pageSize" type="xs:string" use="required" />
              <xs:attribute name="orientation" type="xs:string" use="required" />
              <xs:attribute name="margin" type="xs:unsignedByte" use="required" />
            </xs:complexType>
          </xs:element>
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="access" type="xs:string" use="required" />
      <xs:attribute name="icon" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRvar">
    <xs:complexType>
      <xs:attribute name="var" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRSetVar">
    <xs:complexType>
      <xs:attribute name="name" type="xs:string" use="required" />
      <xs:attribute name="value" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRif">
    <xs:complexType>
      <xs:sequence>
      	<xs:choice macOccurs="unbounded">
          <xs:group ref="containerGroup" />
        </xs:choice>
      </xs:sequence>
      <xs:attribute name="condition" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRHeader">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="containerGroup" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRBody">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="containerGroup" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRFooter">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="containerGroup" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRPageHeader">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="containerGroup" />
        <xs:group ref="textGroup" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRFootnote">
    <xs:complexType>
      <xs:sequence>
        <xs:group ref="containerGroup" />
        <xs:group ref="textGroup" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRCell">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:group ref="textGroup" />
      </xs:sequence>
      <xs:attribute name="width" type="xs:string" use="required" />
      <xs:attribute name="height" type="xs:unsignedByte" use="required" />
      <xs:attribute name="align" type="xs:string" use="required" />
      <xs:attribute name="style" type="xs:string" use="required" />
      <xs:attribute name="border" type="xs:unsignedByte" use="optional" />
      <xs:attribute name="fill" type="xs:string" use="optional" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRTextBox">
	  <xs:complexType>
	    <xs:sequence>
	      <xs:element ref="PGVRText" />
	      <xs:element ref="PGVRGedcom" />
	    </xs:sequence>
	    <xs:attribute name="width" type="xs:unsignedByte" use="required" />
	    <xs:attribute name="height" type="xs:unsignedByte" use="required" />
	    <xs:attribute name="border" type="xs:unsignedByte" use="required" />
	    <xs:attribute name="newline" type="xs:unsignedByte" use="optional" />
	    <xs:attribute name="fill" type="xs:string" use="optional" />
	    <xs:attribute name="left" type="xs:unsignedByte" use="optional" />
        <xs:attribute name="top" type="xs:string" use="optional" />
	  </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRText">
    <xs:complexType mixed="true">
      <xs:sequence minOccurs="0" maxOccurs="unbounded">
        <xs:group ref="textGroup" />
      </xs:sequence>
      <xs:attribute name="style" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRList">
	  <xs:complexType>
	    <xs:sequence>
	      <xs:group ref="containerGroup" />
	    </xs:sequence>
	    <xs:attribute name="list" type="xs:string" use="required" />
        <xs:attribute name="filter1" type="xs:string" use="optional" />
        <xs:attribute name="filter2" type="xs:string" use="optional" />
        <xs:attribute name="filter3" type="xs:string" use="optional" />
        <xs:attribute name="sortby" type="xs:string" use="optional" />
	  </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRGedcom">
	  <xs:complexType>
	    <xs:sequence>
	      <xs:group ref="containerGroup" />
	      <xs:group ref="textGroup" />
	    </xs:sequence>
	    <xs:attribute name="id" type="xs:string" use="required" />
	  </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRRepeatTag">
    <xs:complexType>
      <xs:sequence>
      	<xs:group ref="containerGroup" />
	    <xs:group ref="textGroup" />
      </xs:sequence>
      <xs:attribute name="tag" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRFacts">
    <xs:complexType>
      <xs:sequence>
      	<xs:group ref="containerGroup" />
	    <xs:group ref="textGroup" />
      </xs:sequence>
      <xs:attribute name="ignore" type="xs:string" use="required" />
      <xs:attribute name="families" type="xs:unsignedByte" use="required" />
    </xs:complexType>
  </xs:element>

  <xs:element name="PGVRGetPersonName">
    <xs:complexType>
      <xs:attribute name="id" type="xs:string" use="required" />
      <xs:attribute name="truncate" type="xs:unsignedByte" use="optional" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRGedcomValue">
    <xs:complexType>
      <xs:attribute name="tag" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element minOccurs="0" maxOccurs="unbounded" name="PGVRLine">
	  <xs:complexType>
	    <xs:attribute name="x1" type="xs:unsignedByte" use="required" />
	    <xs:attribute name="y1" type="xs:unsignedShort" use="required" />
	    <xs:attribute name="x2" type="xs:unsignedShort" use="required" />
	    <xs:attribute name="y2" type="xs:unsignedShort" use="required" />
	  </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRvarLetter">
    <xs:complexType>
      <xs:attribute name="var" type="xs:string" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element name="PGVRImage">
    <xs:complexType>
      <xs:attribute name="file" type="xs:string" use="required" />
      <xs:attribute name="left" type="xs:string" use="required" />
      <xs:attribute name="top" type="xs:string" use="required" />
      <xs:attribute name="width" type="xs:unsignedByte" use="required" />
      <xs:attribute name="height" type="xs:unsignedByte" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:element minOccurs="0" name="PGVRHighlightedImage">
    <xs:complexType>
      <xs:attribute name="left" type="xs:string" use="required" />
      <xs:attribute name="top" type="xs:string" use="required" />
      <xs:attribute name="height" type="xs:unsignedByte" use="required" />
      <xs:attribute name="width" type="xs:unsignedByte" use="required" />
    </xs:complexType>
  </xs:element>
  
  <xs:group name="containerGroup">
    <xs:choice>
      <xs:element ref="PGVRif" />
      <xs:element ref="PGVRSetVar" />
      <xs:element ref="PGVRCell" />
      <xs:element ref="PGVRTextBox" />
      <xs:element ref="PGVRList" />
      <xs:element ref="PGVRLine" />
      <xs:element ref="PGVRImage" />
      <xs:element ref="PGVRHighlightedImage" />
      <xs:element ref="PGVRGedcom" />
    </xs:choice>
  </xs:group>
  
  <xs:group name="textGroup">
    <xs:choice>
      <xs:element ref="PGVRvar" maxOccurs="unbounded" minOccurs="0" />
      <xs:element name="PGVRNow" />
      <xs:element name="PGVRPageNum" />
      <xs:element name="PGVRTotalPages" />
      <xs:element ref="PGVRGetPersonName" />
      <xs:element ref="PGVRGedcomValue" />
      <xs:element name="PGVRListTotal" />
      <xs:element name="br" />
      <xs:element name="PGVRFootnoteTexts" />
      <xs:element ref="PGVRvarLetter" />
      <xs:element ref="PGVRText" />
      <xs:element ref="PGVRImage" />
      <xs:element ref="PGVRHighlightedImage" />
    </xs:choice>
  </xs:group>
</xs:schema>

