<?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="PedidoCancelamentoLote">
    <xs:annotation>
      <xs:documentation>Schema utilizado para PEDIDO de cancelamento de lote.</xs:documentation>
      <xs:documentation>Este Schema XML é utilizado pelos prestadores de serviços cancelarem as NFS-e geradas a partir de um lote de RPS.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Cabecalho" minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Cabeçalho do pedido de cancelamento de lote.</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="NumeroLote" type="tipos:tpNumero" minOccurs ="1" maxOccurs ="1">
                <xs:annotation>
                  <xs:documentation>Informe o número do Lote a ser cancelado.</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 ref="ds:Signature" minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Assinatura digital do CNPJ emissor dos RPS.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="PedidoCancelamentoNFe">
    <xs:annotation>
      <xs:documentation>Schema utilizado para PEDIDO de Cancelamento de NFS-e.</xs:documentation>
      <xs:documentation>Este Schema XML é utilizado pelos Prestadores de serviços cancelarem NFS-e emitidas por eles.</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="1" maxOccurs="1" default="true">
                <xs:annotation>
                  <xs:documentation>Informe se as NFS-e a serem canceladas farão parte de uma mesma transação. True - As NFS-e só serão canceladas se não ocorrer nenhum evento de erro durante o processamento de todo o lote; False - As NFS-e aptas a serem canceladas serão canceladas, mesmo que ocorram eventos de erro durante processamento do cancelamento de outras NFS-e deste lote.</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="Detalhe" minOccurs="1" maxOccurs="50">
          <xs:annotation>
            <xs:documentation>Detalhe do pedido de cancelamento de NFS-e. Cada detalhe deverá conter a Chave de uma NFS-e e sua respectiva assinatura de cancelamento.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="ChaveNFe" type="tipos:tpChaveNFe" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                  <xs:documentation>Chave da NFS-e a ser cancelada.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="AssinaturaCancelamento" type="tipos:tpAssinaturaCancelamento" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                  <xs:documentation>Assinatura da NFS-e a ser cancelada.</xs:documentation>
                </xs:annotation>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element ref="ds:Signature"  minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Assinatura digital do CNPJ emissor das NFS-e</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="PedidoConsultaCNPJ">
    <xs:annotation>
      <xs:documentation>Schema utilizado para PEDIDO de consultas de CNPJ.</xs:documentation>
      <xs:documentation>Este Schema XML é utilizado pelos tomadores e/ou prestadores de serviços consultarem quais Inscrições Municipais (CCM) estão vinculadas a um determinado CNPJ e se estes CCM emitem NFS-e ou não.</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: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="CNPJContribuinte" type="tipos:tpCPFCNPJ" minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Informe o CNPJ do Contribuinte que se deseja consultar.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element ref="ds:Signature" minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Assinatura digital do CNPJ tomador/prestador que gerou a mensagem XML.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="PedidoConsultaLote">
    <xs:annotation>
      <xs:documentation>Schema utilizado para PEDIDO de consultas de Lote.</xs:documentation>
      <xs:documentation>Este Schema XML é utilizado pelos prestadores de serviços consultarem as NFS-e geradas a partir de um lote de RPS.</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="NumeroLote" type="tipos:tpNumero" minOccurs ="1" maxOccurs ="1">
                <xs:annotation>
                  <xs:documentation>Informe o número do Lote que deseja consultar.</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 ref="ds:Signature" minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Assinatura digital do contribuinte que gerou o lote de RPS.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="PedidoConsultaNFePeriodo">
    <xs:annotation>
      <xs:documentation>Schema utilizado para PEDIDO de consulta de NFS-e Emitidas ou Recebidas por período.</xs:documentation>
      <xs:documentation>Este Schema XML é utilizado pelos Prestadores/Tomadores de serviços consultarem NFS-e Emitidas ou Recebidas por eles.</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="CPFCNPJ" type="tipos:tpCPFCNPJ" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                  <xs:documentation>Para consulta de NFS-e Recebidas Informe o CNPJ do Tomador.</xs:documentation>
                  <xs:documentation>Para consulta de NFS-e Emitidas Informe o CNPJ do Prestador.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="Inscricao" type="tipos:tpInscricaoMunicipal" minOccurs ="0" maxOccurs="1">
                <xs:annotation>
                  <xs:documentation>Para consulta de NFS-e Recebidas Informe a Inscrição Municipal do Tomador.</xs:documentation>
                  <xs:documentation>Para consulta de NFS-e Emitidas Informe a Inscrição Municipal do Prestador. Neste caso o preenchimento deste campo se torna obrigatório.</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 a ser consultado (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 trasmitido (AAAA-MM-DD).</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="NumeroPagina" type="tipos:tpNumero" minOccurs ="1" maxOccurs ="1" default="1">
                <xs:annotation>
                  <xs:documentation>Informe o número da página que deseja consultar.</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 ref="ds:Signature" minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Assinatura digital do tomador das NFS-e.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="PedidoConsultaNFe">
    <xs:annotation>
      <xs:documentation>Schema utilizado para PEDIDO de consultas de NFS-e.</xs:documentation>
      <xs:documentation>Este Schema XML é utilizado pelos prestadores de serviços consultarem NFS-e geradas por eles.</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: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="Detalhe" minOccurs="1" maxOccurs="50">
          <xs:annotation>
            <xs:documentation>Detalhe do pedido. Cada item de detalhe deverá conter a chave de uma NFS-e ou a chave de um RPS.</xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:choice>
              <xs:element name="ChaveRPS" type="tipos:tpChaveRPS" minOccurs="1" maxOccurs="1" />
              <xs:element name="ChaveNFe" type="tipos:tpChaveNFe" minOccurs="1" maxOccurs="1" />
            </xs:choice>
          </xs:complexType>
        </xs:element>
        <xs:element ref="ds:Signature" minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Assinatura digital do contribuinte que gerou as NFS-e/RPS.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <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>

  <xs:element name="PedidoEnvioRPS">
    <xs:annotation>
      <xs:documentation>Schema utilizado para PEDIDO de envio de RPS.</xs:documentation>
      <xs:documentation>Este Schema XML é utilizado pelos prestadores de serviços para substituição online e individual 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: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="1">
          <xs:annotation>
            <xs:documentation>Informe o RPS a ser substituido 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 o RPS contido da mensagem XML.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:element name="PedidoInformacoesLote">
    <xs:annotation>
      <xs:documentation>Schema utilizado para PEDIDO de informações de lote.</xs:documentation>
      <xs:documentation>Este Schema XML é utilizado pelos prestadores de serviços para obterem informações de lotes de RPS que geraram 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="NumeroLote" type="tipos:tpNumero" minOccurs ="0" maxOccurs ="1">
                <xs:annotation>
                  <xs:documentation>Informe o número do lote que deseja obter informações. Caso não seja informado o número do lote, serão retornadas informações do último lote gerador de NFS-e.</xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:element name="InscricaoPrestador" type="tipos:tpInscricaoMunicipal" minOccurs ="1" maxOccurs="1">
                <xs:annotation>
                  <xs:documentation>Informe a Inscrição municipal do prestador de serviços que gerou o lote.</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 ref="ds:Signature" minOccurs="1" maxOccurs="1">
          <xs:annotation>
            <xs:documentation>Assinatura digital do contribuinte que gerou o lote de RPS.</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <!-- Tipos Simples -->
  <xs:simpleType name="tpAliquota">
    <xs:annotation>
      <xs:documentation>Tipo utilizado para valor de alíquota</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:decimal">
      <xs:totalDigits value="5" />
      <xs:fractionDigits value="4" />
      <xs:minInclusive value="0" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpAssinatura">
    <xs:annotation>
      <xs:documentation>Assinatura digital do RPS emitido.</xs:documentation>
      <xs:documentation>O RPS deverá ser assinado digitalmente. O contribuinte deverá assinar uma cadeia de caracteres (ASCII) com informações do RPS emitido.</xs:documentation>
      <xs:documentation>O certificado digital utilizado na assinatura de cancelamento deverá ser o mesmo utilizado na assinatura da mensagem XML. A cadeia de caracteres a ser assinada deverá conter 86 posições com as informações apresentadas a seguir:</xs:documentation>
      <xs:documentation>Inscrição Municipal (CCM) do Prestador com 8 caracteres. Caso o CCM do Prestador tenha menos de 8 caracteres, o mesmo deverá ser completado com zeros à esquerda.</xs:documentation>
      <xs:documentation>Série do RPS com 5 posições. Caso a Série do RPS tenha menos de 5 caracteres, o mesmo deverá ser completado com espaços em branco à direita.</xs:documentation>
      <xs:documentation>Número do RPS com 12 posições. Caso o Número do RPS tenha menos de 12 caracteres, o mesmo deverá ser completado com zeros à esquerda.</xs:documentation>
      <xs:documentation>Data da emissão do RPS no formato AAAAMMDD.</xs:documentation>
      <xs:documentation>Tipo de Tributação do RPS com uma posição (sendo T: para Tributação no municipio de São Paulo; F: para Tributação fora do municipio de São Paulo; I: para Isento; J: para ISS Suspenso por Decisão Judicial).</xs:documentation>
      <xs:documentation>Status do RPS com uma posição (sendo N: Normal, C: Cancelado; E: Extraviado).</xs:documentation>
      <xs:documentation>ISS Retido com uma posição (sendo S: ISS Retido; N: Nota Fiscal sem ISS Retido).</xs:documentation>
      <xs:documentation>Valor dos Serviços com 15 posições e sem separador de milhar e decimal.</xs:documentation>
      <xs:documentation>Valor das Deduções com 15 posições e sem separador de milhar e decimal.</xs:documentation>
      <xs:documentation>Código do Serviço com 5 posições.</xs:documentation>
      <xs:documentation>CPF/CNPJ do tomador com 14 posições. Sem formatação (ponto, traço, barra, ....). Completar com zeros à esquerda caso seja necessário. Se o Indicador do CPF/CNPJ for 3 (não-informado), preencher com 14 zeros.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:base64Binary">
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpAssinaturaCancelamento">
    <xs:annotation>
      <xs:documentation>Assinatura digital de cancelamento da NFS-e.</xs:documentation>
      <xs:documentation>Cada NFS-e a ser cancelada deverá ter sua respectiva assinatura de cancelamento. O contribuinte deverá assinar uma cadeia de caracteres (ASCII) com informações da NFS-e a ser cancelada.</xs:documentation>
      <xs:documentation>O certificado digital utilizado na assinatura de cancelamento deverá ser o mesmo utilizado na assinatura da mensagem XML. A cadeia de caracteres a ser assinada deverá conter 20 posições com as informações apresentadas a seguir:</xs:documentation>
      <xs:documentation>Inscrição Municipal (CCM) do Prestador com 8 caracteres. Caso o CCM do Prestador tenha menos de 8 caracteres, o mesmo deverá ser completado com zeros à esquerda.</xs:documentation>
      <xs:documentation>Número da NFS-e RPS com 12 posições. Caso o Número da NFS-e tenha menos de 12 caracteres, o mesmo deverá ser completado com zeros à esquerda.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:base64Binary">
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpBairro">
    <xs:annotation>
      <xs:documentation>Tipo bairro.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="0" />
      <xs:maxLength value="30" />
      <xs:whiteSpace value="collapse" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpCEP">
    <xs:annotation>
      <xs:documentation>Tipo CEP.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:int">
      <xs:pattern value="[0-9]{7,8}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpCidade">
    <xs:annotation>
      <xs:documentation>Tipo cidade.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:int">
      <xs:pattern value="[0-9]{7}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpCNPJ">
    <xs:annotation>
      <xs:documentation>Tipo CNPJ.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9]{14}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpCodigoServico">
    <xs:annotation>
      <xs:documentation>Tipo código de serviço.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:int">
      <xs:pattern value="[0-9]{4,5}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpCodigoEvento">
    <xs:annotation>
      <xs:documentation>Tipo código de evento.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:short">
      <xs:pattern value="[0-9]{3,4}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpCodigoVerificacao">
    <xs:annotation>
      <xs:documentation>Tipo Código de verificação da NFS-e.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="8" />
      <xs:maxLength value="8" />
      <xs:whiteSpace value="collapse" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpComplementoEndereco">
    <xs:annotation>
      <xs:documentation>Tipo complemento do endereço.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="0" />
      <xs:maxLength value="30" />
      <xs:whiteSpace value="collapse" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpCPF">
    <xs:annotation>
      <xs:documentation>Tipo CPF.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9]{0}|[0-9]{11}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpDescricaoEvento">
    <xs:annotation>
      <xs:documentation>Tipo descrição do evento.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="0" />
      <xs:maxLength value="300" />
      <xs:whiteSpace value="collapse" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpDiscriminacao">
    <xs:annotation>
      <xs:documentation>Tipo Discriminação Serviços.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="1" />
      <xs:maxLength value="2000" />
      <xs:whiteSpace value="collapse" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpEmail">
    <xs:annotation>
      <xs:documentation>Tipo E-mail.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="0" />
      <xs:maxLength value="75" />
      <xs:whiteSpace value="collapse" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpInscricaoEstadual">
    <xs:annotation>
      <xs:documentation>Tipo Inscrição Estadual.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:long">
      <xs:pattern value="[0-9]{1,19}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpInscricaoMunicipal">
    <xs:annotation>
      <xs:documentation>Tipo padrão referente a inscrição municipal.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:long">
      <xs:pattern value="[0-9]{8,8}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpLogradouro">
    <xs:annotation>
      <xs:documentation>Endereço.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="0" />
      <xs:maxLength value="50" />
      <xs:whiteSpace value="collapse" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpNumero">
    <xs:annotation>
      <xs:documentation>Tipo número.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:long">
      <xs:pattern value="[0-9]{1,12}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpNumeroEndereco">
    <xs:annotation>
      <xs:documentation>Tipo número do endereço.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="0" />
      <xs:maxLength value="10" />
      <xs:whiteSpace value="collapse" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpOpcaoSimples">
    <xs:annotation>
      <xs:documentation>Tipo referente às possíveis opções de escolha pelo Simples.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="0">
        <xs:annotation>
          <xs:documentation>Não-optante pelo Simples Federal nem Municipal.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="1">
        <xs:annotation>
          <xs:documentation>Optante pelo Simples Federal (Alíquota de 1,0%).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="2">
        <xs:annotation>
          <xs:documentation>Optante pelo Simples Federal (Alíquota de 0,5%).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="3">
        <xs:annotation>
          <xs:documentation>Optante pelo Simples Municipal.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpQuantidade">
    <xs:annotation>
      <xs:documentation>Tipo padrão para quantidades.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:long">
      <xs:pattern value="[0-9]{1,15}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpRazaoSocial">
    <xs:annotation>
      <xs:documentation>Tipo Razão Social.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="0" />
      <xs:maxLength value="75" />
      <xs:whiteSpace value="collapse" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpSerieRPS">
    <xs:annotation>
      <xs:documentation>Tipo série de documento.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="1" />
      <xs:maxLength value="5" />
      <xs:whiteSpace value="collapse" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpStatusNFe">
    <xs:annotation>
      <xs:documentation>Tipo referente aos possíveis status de NFS-e.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="N">
        <xs:annotation>
          <xs:documentation>Normal.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="C">
        <xs:annotation>
          <xs:documentation>Cancelada.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="E">
        <xs:annotation>
          <xs:documentation>Extraviada.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpSucesso">
    <xs:annotation>
      <xs:documentation>Tipo que indica se o pedido do serviço obteve sucesso.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:boolean">
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpTempoProcessamento">
    <xs:annotation>
      <xs:documentation>Tipo referente ao tempo de processamento do lote.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:long">
      <xs:pattern value="[0-9]{1,15}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpTipoLogradouro">
    <xs:annotation>
      <xs:documentation>Tipo do endereço (Rua, Av, ...).</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="0" />
      <xs:maxLength value="3" />
      <xs:whiteSpace value="collapse" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpTipoRPS">
    <xs:annotation>
      <xs:documentation>Tipo referente aos possíveis tipos de RPS.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="RPS">
        <xs:annotation>
          <xs:documentation>Recibo Provisório de Serviços.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RPS-M">
        <xs:annotation>
          <xs:documentation>Recibo Provisório de Serviços proveniente de Nota Fiscal Conjugada (Mista).</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="RPS-C">
        <xs:annotation>
          <xs:documentation>Cupom.</xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpTributacaoNFe">
    <xs:annotation>
      <xs:documentation>Tipo referente aos modos de tributação da NFe.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="1" />
      <xs:maxLength value="1" />
      <xs:whiteSpace value="collapse" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpUF">
    <xs:annotation>
      <xs:documentation>Tipo UF.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="2" />
      <xs:maxLength value="2" />
      <xs:whiteSpace value="collapse" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpValor">
    <xs:annotation>
      <xs:documentation>Tipo utilizado para valores com 15 dígitos, sendo 13 de corpo e 2 decimais.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:decimal">
      <xs:totalDigits value="15" />
      <xs:fractionDigits value="2" />
      <xs:minInclusive value="0" />
      <xs:pattern value="0|0\.[0-9]{2}|[1-9]{1}[0-9]{0,12}(\.[0-9]{0,2})?" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpVersao">
    <xs:annotation>
      <xs:documentation>Tipo Versão do Schema.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:long">
      <xs:pattern value="[0-9]{1,3}" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpPercentualCargaTributaria">
    <xs:annotation>
      <xs:documentation>Tipo utilizado para o valor do percentual da carga tributária.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:decimal">
      <xs:totalDigits value="7" />
      <xs:fractionDigits value="4" />
      <xs:minInclusive value="0" />
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="tpFonteCargaTributaria">
    <xs:annotation>
      <xs:documentation>Tipo utilizado para a fonte da carga tributária.</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:minLength value="0" />
      <xs:maxLength value="10" />
      <xs:whiteSpace value="collapse" />
    </xs:restriction>
  </xs:simpleType>

    <!-- Tipos Complexos -->
  <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>