<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
  (c) CoreFiling S.A.R.L.

  This work is licensed under the Creative Commons Attribution-ShareAlike 3.0
  Unported License. To view a copy of this license, visit
  http://creativecommons.org/licenses/by-sa/3.0/
-->

<xsd:schema xmlns:tp="http://www.corefiling.com/xbrl/taxonomypackage/v1" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xml="http://www.w3.org/XML/1998/namespace" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.corefiling.com/xbrl/taxonomypackage/v1">

<xsd:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/03/xml.xsd"/> 

  <xsd:element name="taxonomyPackage" type="tp:taxonomyPackageType" />
  
  <xsd:complexType name="taxonomyPackageType">
    <xsd:sequence>
      <xsd:group ref="tp:documentationGroup" minOccurs="0" maxOccurs="unbounded"/>
      <xsd:element name="version" type="tp:stringType" minOccurs="0" maxOccurs="1"/>    
      <xsd:element name="remappings" type="tp:remappingsType" minOccurs="0" maxOccurs="1" />
      <xsd:element name="entryPoints" type="tp:entryPointsType" minOccurs="0" maxOccurs="1" />
      <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##any" processContents="lax" />
  </xsd:complexType>
  
  <xsd:complexType name="remappingsType">
    <xsd:sequence>
      <xsd:element name="remapping" type="tp:remappingType" minOccurs="0" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax" /> 
    </xsd:sequence>
    <xsd:anyAttribute namespace="##any" processContents="lax" />
  </xsd:complexType>

  <xsd:complexType name="remappingType">
    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
      <xsd:any namespace="##other" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="prefix" type="xsd:string" use="required" />
    <xsd:attribute name="replaceWith" type="xsd:string" use="required" />
    <xsd:anyAttribute namespace="##any" processContents="lax" />
  </xsd:complexType>
  
  <xsd:complexType name="entryPointsType">
    <xsd:sequence>
      <xsd:element name="entryPoint" type="tp:entryPointType" minOccurs="0" maxOccurs="unbounded" /> 
      <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##any" processContents="lax" />
  </xsd:complexType>
  
  <xsd:complexType name="entryPointType">
    <xsd:sequence>
      <xsd:group ref="tp:documentationGroup" minOccurs="0" maxOccurs="unbounded" />
      <xsd:element name="version" type="tp:stringType" minOccurs="0" maxOccurs="1"/>    
      <xsd:element name="entryPointDocument" type="tp:entryPointDocumentType" minOccurs="1" maxOccurs="unbounded" />
      <xsd:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##any" processContents="lax" />
  </xsd:complexType>
  
  <xsd:complexType name="entryPointDocumentType">
    <xsd:sequence minOccurs="0" maxOccurs="unbounded">
      <xsd:any namespace="##other" processContents="lax" />
    </xsd:sequence>
    <xsd:attribute name="href" type="xsd:anyURI" use="required" />
    <xsd:anyAttribute namespace="##any" processContents="lax" />
  </xsd:complexType>

  <xsd:group name="documentationGroup">
    <xsd:choice>
      <xsd:element name="name" type="tp:stringType" />
      <xsd:element name="description" type="tp:stringType" />
    </xsd:choice>
  </xsd:group>
  
  <xsd:complexType name="stringType">
    <xsd:simpleContent>
      <xsd:extension base="xsd:string">
        <xsd:anyAttribute namespace="##any" processContents="lax" />
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>
  
</xsd:schema>
