<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://www.prefeitura.sp.gov.br/nfe" 
           xmlns:tipos="http://www.prefeitura.sp.gov.br/nfe/tipos" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
  <xs:import namespace="http://www.prefeitura.sp.gov.br/nfe/tipos" schemaLocation="TiposNFe_v01.xsd" />
  <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema_v01.xsd" />
  <xs:element name="PedidoEnvioLoteRPS">
    <xs:annotation>
      <xs:documentation>Schema utilizado para PEDIDO de envio de lote de RPS.</xs:documentation>
      <xs:documentation>Este Schema XML é utilizado pelos prestadores de serviços para substituição em lote de RPS por NFS-e.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Cabecalho" minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Cabeçalho do pedido.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="CPFCNPJRemetente" type="tipos:tpCPFCNPJ" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                  <xs:documentation>Informe o CPF/CNPJ do Remetente autorizado a transmitir a mensagem XML.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="transacao" type="xs:boolean" minOccurs="0" maxOccurs="1" default="true">
                <xs:annotation>
                  <xs:documentation>Informe se os RPS a serem substituídos por NFS-e farão parte de uma mesma transação. True - Os RPS só serão substituídos por NFS-e se não ocorrer nenhum evento de erro durante o processamento de todo o lote; False - Os RPS válidos serão substituídos por NFS-e, mesmo que ocorram eventos de erro durante processamento de outros RPS deste lote.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="dtInicio" type="xs:date" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                  <xs:documentation>Informe a data de início do período transmitido (AAAA-MM-DD).</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="dtFim" type="xs:date" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                  <xs:documentation>Informe a data final do período transmitido (AAAA-MM-DD).</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="QtdRPS"  type="tipos:tpQuantidade" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                  <xs:documentation>Informe o total de RPS contidos na mensagem XML.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="ValorTotalServicos" type="tipos:tpValor" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                  <xs:documentation>Informe o valor total dos serviços prestados dos RPS contidos na mensagem XML.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="ValorTotalDeducoes" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
                <xs:annotation>
                  <xs:documentation>Informe o valor total das deduções dos RPS contidos na mensagem XML.</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
            <xs:attribute name="Versao" type="tipos:tpVersao" use="required" fixed="1">
              <xs:annotation>
                <xs:documentation>Informe a Versão do Schema XML utilizado.</xs:documentation>
              </xs:annotation>
            </xs:attribute>
          </xs:complexType>
        </xs:element>
        <xs:element name="RPS" type="tipos:tpRPS" minOccurs="1" maxOccurs="50">
          <xs:annotation>
            <xs:documentation>Informe os RPS a serem substituidos por NFS-e.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element ref="ds:Signature" minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Assinatura digital do contribuinte que gerou os RPS contidos na mensagem XML.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

 <xsd:simpleType name="tsNumeroNfse">
		<xsd:restriction base="xsd:nonNegativeInteger">
			<xsd:totalDigits value="15"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsCodigoVerificacao">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="9"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsStatusRps">
		<xsd:restriction base="xsd:byte">
			<xsd:pattern value="1|2"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsStatusNfse">
		<xsd:restriction base="xsd:byte">
			<xsd:pattern value="1|2"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsNaturezaOperacao">
		<xsd:restriction base="xsd:byte">
			<xsd:pattern value="1|2|3|4|5|6"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsRegimeEspecialTributacao">
		<xsd:restriction base="xsd:byte">
			<xsd:pattern value="1|2|3|4|5|6"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsSimNao">
		<xsd:restriction base="xsd:byte">
			<xsd:pattern value="1|2"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsNumeroRps">
		<xsd:restriction base="xsd:nonNegativeInteger">
			<xsd:totalDigits value="15"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsSerieRps">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="5"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsTipoRps">
		<xsd:restriction base="xsd:byte">
			<xsd:pattern value="1|2|3"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsOutrasInformacoes">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="255"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsValor">
		<xsd:restriction base="xsd:decimal">
			<xsd:totalDigits value="15"/>
			<xsd:fractionDigits value="2" fixed="true"/>
			<xsd:minInclusive value="0"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsItemListaServico">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="5"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsCodigoCnae">
		<xsd:restriction base="xsd:int">
			<xsd:totalDigits value="7"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsCodigoTributacao">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="20"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsAliquota">
		<xsd:restriction base="xsd:decimal">
			<xsd:totalDigits value="5"/>
			<xsd:fractionDigits value="4"/>
			<xsd:minInclusive value="0"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsDiscriminacao">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="2000"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsCodigoMunicipioIbge">
		<xsd:restriction base="xsd:int">
			<xsd:totalDigits value="7"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsInscricaoMunicipal">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="15"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsRazaoSocial">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="115"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsNomeFantasia">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="60"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsCnpj">
		<xsd:restriction base="xsd:string">
			<xsd:length value="14" fixed="true"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsEndereco">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="125"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsNumeroEndereco">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="10"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsComplementoEndereco">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="60"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsBairro">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="60"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsUf">
		<xsd:restriction base="xsd:string">
			<xsd:length value="2" fixed="true"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsCep">
		<xsd:restriction base="xsd:int">
			<xsd:totalDigits value="8" fixed="true"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsEmail">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="80"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsTelefone">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="11"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsCpf">
		<xsd:restriction base="xsd:string">
			<xsd:length value="11" fixed="true"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsIndicacaoCpfCnpj">
		<xsd:restriction base="xsd:byte">
			<xsd:pattern value="1|2|3"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsCodigoObra">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="15"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsArt">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="15"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsNumeroLote">
		<xsd:restriction base="xsd:nonNegativeInteger">
			<xsd:totalDigits value="15"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsNumeroProtocolo">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="50"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsSituacaoLoteRps">
		<xsd:restriction base="xsd:byte">
			<xsd:pattern value="1|2|3|4"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsQuantidadeRps">
		<xsd:restriction base="xsd:int">
			<xsd:totalDigits value="4"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsCodigoMensagemAlerta">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="4"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsDescricaoMensagemAlerta">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="200"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsCodigoCancelamentoNfse">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="4"/>
			<xsd:minLength value="1"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsIdTag">
		<xsd:restriction base="xsd:string">
			<xsd:maxLength value="255"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="tsVersao">
		<xsd:restriction base="xsd:token">
			<xsd:pattern value="[0-9]{1,4}"/>
			<xsd:whiteSpace value="collapse"/>
		</xsd:restriction>
	</xsd:simpleType>
   
  <xs:complexType name="tpEvento">
    <xs:sequence>
      <xs:element name="Codigo" type="tipos:tpCodigoEvento" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Código do evento.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Descricao" type="tipos:tpDescricaoEvento" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Descrição do enveto.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice minOccurs ="0" maxOccurs ="1">
        <xs:annotation>
          <xs:documentation>Chave para identificação da origem do evento.</xs:documentation>
        </xs:annotation>
        <xs:element name="ChaveRPS" type="tipos:tpChaveRPS" minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Chave do RPS.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="ChaveNFe" type="tipos:tpChaveNFe" minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Chave da NFe.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tpCPFCNPJ">
    <xs:annotation>
      <xs:documentation>Tipo que representa um CPF/CNPJ.</xs:documentation>
    </xs:annotation>
    <xs:choice>
      <xs:element name="CPF" type="tipos:tpCPF" minOccurs="1" maxOccurs="1" />
      <xs:element name="CNPJ" type="tipos:tpCNPJ" minOccurs="1" maxOccurs="1" />
    </xs:choice>
  </xs:complexType>
  <xs:complexType name="tpChaveNFeRPS">
    <xs:annotation>
      <xs:documentation>Tipo que representa a chave de uma NFS-e e a Chave do RPS que a mesma substitui.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="ChaveNFe" type ="tipos:tpChaveNFe" minOccurs ="1" maxOccurs="1" >
        <xs:annotation>
          <xs:documentation>Chave da NFS-e gerada.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ChaveRPS" type ="tipos:tpChaveRPS" minOccurs ="1" maxOccurs="1" >
        <xs:annotation>
          <xs:documentation>Chave do RPS substituído.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tpChaveNFe">
    <xs:annotation>
      <xs:documentation>Chave de identificação da NFS-e.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="InscricaoPrestador" type="tipos:tpInscricaoMunicipal" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Inscrição municipal do prestador de serviços.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NumeroNFe" type="tipos:tpNumero"  minOccurs ="1" maxOccurs ="1">
        <xs:annotation>
          <xs:documentation>Número da NFS-e.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CodigoVerificacao" type="tipos:tpCodigoVerificacao"  minOccurs ="0" maxOccurs ="1">
        <xs:annotation>
          <xs:documentation>Código de verificação da NFS-e.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tpChaveRPS">
    <xs:annotation>
      <xs:documentation>Tipo que define a chave identificadora de um RPS.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="InscricaoPrestador" type="tipos:tpInscricaoMunicipal" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Inscrição municipal do prestador de serviços.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SerieRPS" type="tipos:tpSerieRPS" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Série do RPS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NumeroRPS" type="tipos:tpNumero" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Número do RPS.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tpEndereco">
    <xs:annotation>
      <xs:documentation>Tipo Endereço.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="TipoLogradouro" type="tipos:tpTipoLogradouro" minOccurs="0" maxOccurs="1" />
      <xs:element name="Logradouro" type="tipos:tpLogradouro" minOccurs="0" maxOccurs="1" />
      <xs:element name="NumeroEndereco" type="tipos:tpNumeroEndereco" minOccurs="0" maxOccurs="1" />
      <xs:element name="ComplementoEndereco" type="tipos:tpComplementoEndereco" minOccurs="0" maxOccurs="1" />
      <xs:element name="Bairro" type="tipos:tpBairro" minOccurs="0" maxOccurs="1" />
      <xs:element name="Cidade" type="tipos:tpCidade" minOccurs="0" maxOccurs="1" />
      <xs:element name="UF" type="tipos:tpUF" minOccurs="0" maxOccurs="1" />
      <xs:element name="CEP" type="tipos:tpCEP" minOccurs="0" maxOccurs="1" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tpInformacoesLote">
    <xs:annotation>
      <xs:documentation>Informações do lote processado.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="NumeroLote" type="tipos:tpNumero" minOccurs ="0" maxOccurs ="1">
        <xs:annotation>
          <xs:documentation>Número de lote.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="InscricaoPrestador" type="tipos:tpInscricaoMunicipal" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Inscrição municipal do prestador dos RPS contidos no lote.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CPFCNPJRemetente" type="tipos:tpCPFCNPJ" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>CNPJ do remetente autorizado a transmitir a mensagem XML.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DataEnvioLote" type="xs:dateTime" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Data/hora de envio do lote.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="QtdNotasProcessadas" type="tipos:tpQuantidade" minOccurs ="1" maxOccurs ="1">
        <xs:annotation>
          <xs:documentation>Quantidade de RPS do lote.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TempoProcessamento" type="tipos:tpTempoProcessamento" minOccurs ="1" maxOccurs ="1">
        <xs:annotation>
          <xs:documentation>Tempo de processamento do lote.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorTotalServicos" type="tipos:tpValor" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Valor total dos serviços dos RPS contidos na mensagem XML.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorTotalDeducoes" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Valor total das deduções dos RPS contidos na mensagem XML.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tpNFe">
    <xs:annotation>
      <xs:documentation>Tipo que representa uma NFS-e</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Assinatura" type="tipos:tpAssinatura" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Assinatura digital da NFS-e.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ChaveNFe" type="tipos:tpChaveNFe" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Chave de identificação da NFS-e.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DataEmissaoNFe" type="xs:dateTime" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Data de emissão da NFS-e</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NumeroLote" type="tipos:tpNumero" minOccurs ="0" maxOccurs ="1">
        <xs:annotation>
          <xs:documentation>Número de lote gerador da NFS-e.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ChaveRPS" type="tipos:tpChaveRPS" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Chave do RPS que originou a NFS-e.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TipoRPS" type="tipos:tpTipoRPS" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Tipo do RPS emitido.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DataEmissaoRPS" type="xs:date" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Data de emissão do RPS que originou a NFS-e.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CPFCNPJPrestador" type="tipos:tpCPFCNPJ" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>CPF/CNPJ do Prestador do serviço.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RazaoSocialPrestador" type="tipos:tpRazaoSocial" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Nome/Razão Social do Prestador.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EnderecoPrestador" type="tipos:tpEndereco" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Endereço do Prestador.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EmailPrestador" type="tipos:tpEmail" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>E-mail do Prestador.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StatusNFe" type="tipos:tpStatusNFe" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Status da NFS-e.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DataCancelamento" type="xs:dateTime" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Data de cancelamento da NFS-e.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TributacaoNFe" type="tipos:tpTributacaoNFe" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Tributação da NFS-e.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OpcaoSimples" type="tipos:tpOpcaoSimples" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Opção pelo Simples.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NumeroGuia" type="tipos:tpNumero" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Número da guia vinculada a NFS-e.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DataQuitacaoGuia" type="xs:date" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Data de quitação da guia vinculada a NFS-e.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorServicos" type="tipos:tpValor" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Valor dos serviços prestados.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorDeducoes" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Valor das deduções.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorPIS" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Valor da retenção do PIS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorCOFINS" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Valor da retenção do COFINS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorINSS" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Valor da retenção do INSS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorIR" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Valor da retenção do IR.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorCSLL" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Valor da retenção do CSLL.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CodigoServico" type="tipos:tpCodigoServico" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Código do serviço.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AliquotaServicos" type="tipos:tpAliquota" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Valor da alíquota.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorISS" type="tipos:tpValor" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Valor do ISS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorCredito" type="tipos:tpValor" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Valor do crédito gerado.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ISSRetido" type="xs:boolean" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Retenção do ISS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CPFCNPJTomador" type="tipos:tpCPFCNPJ" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>CPF/CNPJ do tomador do serviço.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="InscricaoMunicipalTomador" type="tipos:tpInscricaoMunicipal" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Inscrição Municipal do Tomador.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="InscricaoEstadualTomador" type="tipos:tpInscricaoEstadual" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Inscrição Estadual do tomador.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RazaoSocialTomador" type="tipos:tpRazaoSocial" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Nome/Razão Social do tomador.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EnderecoTomador" type="tipos:tpEndereco" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Endereço do tomador.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EmailTomador" type="tipos:tpEmail" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>E-mail do tomador.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CPFCNPJIntermediario" type="tipos:tpCPFCNPJ" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>CNPJ do intermediário de serviço.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="InscricaoMunicipalIntermediario" type="tipos:tpInscricaoMunicipal" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Inscrição Municipal do intermediário de serviço.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ISSRetidoIntermediario" type="xs:string" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Retenção do ISS pelo intermediário de serviço.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EmailIntermediario" type="tipos:tpEmail" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>E-mail do intermediário de serviço.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Discriminacao" type="tipos:tpDiscriminacao" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Descrição dos serviços.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorCargaTributaria" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Valor da carga tributária total em R$.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PercentualCargaTributaria" type="tipos:tpPercentualCargaTributaria" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Valor percentual da carga tributária.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FonteCargaTributaria" type="tipos:tpFonteCargaTributaria" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Fonte de informação da carga tributária.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CodigoCEI" type="tipos:tpNumero" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Código do CEI – Cadastro específico do INSS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MatriculaObra" type="tipos:tpNumero" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Código que representa a matrícula da obra no sistema de cadastro de obras.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MunicipioPrestacao" type="tipos:tpCidade" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Código da cidade do município da prestação do serviço.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NumeroEncapsulamento" type="tipos:tpNumero" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Código que representa o número do encapsulamento.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorTotalRecebido" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o valor total recebido.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tpRPS">
    <xs:annotation>
      <xs:documentation>Tipo que representa um RPS.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Assinatura" type="tipos:tpAssinatura" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Assinatura digital do RPS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ChaveRPS" type="tipos:tpChaveRPS" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe a chave do RPS emitido.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TipoRPS" type="tipos:tpTipoRPS" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o Tipo do RPS emitido.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DataEmissao" type="xs:date" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe a Data de emissão do RPS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="StatusRPS" type="tipos:tpStatusNFe" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o Status do RPS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="TributacaoRPS" type="tipos:tpTributacaoNFe" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o tipo de tributação do RPS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorServicos" type="tipos:tpValor" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o valor dos serviços prestados.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorDeducoes" type="tipos:tpValor" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o valor das deduções.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorPIS" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o valor da retenção do PIS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorCOFINS" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o valor da retenção do COFINS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorINSS" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o valor da retenção do INSS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorIR" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o valor da retenção do IR.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorCSLL" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o valor da retenção do CSLL.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CodigoServico" type="tipos:tpCodigoServico" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o código do serviço do RPS. Este código deve pertencer à lista de serviços.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="AliquotaServicos" type="tipos:tpAliquota" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o valor da alíquota. Obs. O conteúdo deste campo será ignorado caso a tributação ocorra no município (Situação do RPS = T ).</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ISSRetido" type="xs:boolean" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe a retenção.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CPFCNPJTomador" type="tipos:tpCPFCNPJ" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o CPF/CNPJ do tomador do serviço. O conteúdo deste campo será ignorado caso o campo InscricaoMunicipalTomador esteja preenchido.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="InscricaoMunicipalTomador" type="tipos:tpInscricaoMunicipal" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe a Inscrição Municipal do Tomador. ATENÇÃO: Este campo só deverá ser preenchido para tomadores estabelecidos no município de São Paulo (CCM). Quando este campo for preenchido, seu conteúdo será considerado como prioritário com relação ao campo de CPF/CNPJ do Tomador, sendo utilizado para identificar o Tomador e recuperar seus dados da base de dados da Prefeitura.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="InscricaoEstadualTomador" type="tipos:tpInscricaoEstadual" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe a inscrição estadual do tomador. Este campo será ignorado caso seja fornecido um CPF/CNPJ ou a Inscrição Municipal do tomador pertença ao município de São Paulo.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="RazaoSocialTomador" type="tipos:tpRazaoSocial" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o Nome/Razão Social do tomador. Este campo é obrigatório apenas para tomadores Pessoa Jurídica (CNPJ). Este campo será ignorado caso seja fornecido um CPF/CNPJ ou a Inscrição Municipal do tomador pertença ao município de São Paulo.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EnderecoTomador" type="tipos:tpEndereco" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o endereço do tomador. Os campos do endereço são obrigatórios apenas para tomadores pessoa jurídica (CNPJ informado). O conteúdo destes campos será ignorado caso seja fornecido um CPF/CNPJ ou a Inscrição Municipal do tomador pertença ao município de São Paulo.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EmailTomador" type="tipos:tpEmail" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o e-mail do tomador.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CPFCNPJIntermediario" type="tipos:tpCPFCNPJ" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>CNPJ do intermediário de serviço.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="InscricaoMunicipalIntermediario" type="tipos:tpInscricaoMunicipal" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Inscrição Municipal do intermediário de serviço.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ISSRetidoIntermediario" type="xs:string" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Retenção do ISS pelo intermediário de serviço.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EmailIntermediario" type="tipos:tpEmail" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>E-mail do intermediário de serviço.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Discriminacao" type="tipos:tpDiscriminacao" minOccurs="1" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe a discriminação dos serviços.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorCargaTributaria" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Valor da carga tributária total em R$.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="PercentualCargaTributaria" type="tipos:tpPercentualCargaTributaria" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Valor percentual da carga tributária.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="FonteCargaTributaria" type="tipos:tpFonteCargaTributaria" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Fonte de informação da carga tributária.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CodigoCEI" type="tipos:tpNumero" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Código do CEI – Cadastro específico do INSS.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MatriculaObra" type="tipos:tpNumero" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Código que representa a matrícula da obra no sistema de cadastro de obras.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="MunicipioPrestacao" type="tipos:tpCidade" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Código da cidade do município da prestação do serviço.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="NumeroEncapsulamento" type="tipos:tpNumero" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Código que representa o número do encapsulamento da obra.</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ValorTotalRecebido" type="tipos:tpValor" minOccurs="0" maxOccurs="1">
        <xs:annotation>
          <xs:documentation>Informe o valor total recebido.</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:schema>
