<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema_v1.01.xsd"/>
<!--
 ***********************************************************  
-->
<!--
 ****  XML para Prefeitura de Sapucaia do Sul - RS     *****  
-->
<!--
 ****  NFS-e: Nota Fiscal de Serviços eletrônica       *****  
-->
<!--
 **** Data da Última Atualização:  2015-04-24  13:45   *****  
-->
<!--
 ***********************************************************  
-->
<!--
 Definicao de estruturas para chamadas dos serviços Web       
-->
<!--
 Definicao da estrutura de dados para Envio de Lote NFSe 
-->
<xs:element name="envioLote">
<xs:complexType>
<xs:sequence>
<!--  CNPJ de um contribuinte  -->
<xs:element name="CNPJ" type="TCnpj"/>
<!--  Data e hora da transmissao do lote  -->
<xs:element name="dhTrans" type="TDataHora"/>
<!--  Notas fiscais de servico do lote  -->
<xs:element ref="NFS-e" minOccurs="1" maxOccurs="999"/>
<!--  Assinatura digital    -->
<xs:element ref="ds:Signature" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="versao" use="required" type="xs:string" fixed="1.0"/>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para confirmacao de recebimento de Lote NFSe 
-->
<xs:element name="confirmaLote">
<xs:complexType>
<xs:sequence>
<!--  CNPJ de um contribuinte  -->
<xs:element name="CNPJ" type="TCnpj"/>
<!--  Data e hora do recebimento do lote  -->
<xs:element name="dhRecbto" type="TDataHora"/>
<!--  Situacao do lote  -->
<xs:element name="sit" type="TSituacaoLote"/>
<!--  Assinatura digital    -->
<xs:element ref="ds:Signature" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="versao" use="required" type="xs:string" fixed="1.0"/>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para Pedido de Status de Lote NFSe 
-->
<xs:element name="pedidoStatusLote">
<xs:complexType>
<xs:sequence>
<!--  CNPJ de um contribuinte  -->
<xs:element name="CNPJ" type="TCnpj" minOccurs="1"/>
<!--  Número do lote    -->
<xs:element name="cLote" type="TString15" minOccurs="1"/>
<!--  Assinatura digital    -->
<xs:element ref="ds:Signature" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="versao" use="required" type="xs:string" fixed="1.0"/>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para Pedido de Cancelamento de Lote NFSe 
-->
<xs:element name="pedidoCancelamentoLote">
<xs:complexType>
<xs:sequence>
<!--  CNPJ de um contribuinte  -->
<xs:element name="CNPJ" type="TCnpj" minOccurs="1"/>
<!--  Número do lote    -->
<xs:element name="cLote" type="TString15" minOccurs="1"/>
<!--  Assinatura digital    -->
<xs:element ref="ds:Signature" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="versao" use="required" type="xs:string" fixed="1.0"/>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para Pedido de um Lote NFSe 
-->
<xs:element name="pedidoLoteNFSe">
<xs:complexType>
<xs:sequence>
<!--  CNPJ de um contribuinte  -->
<xs:element name="CNPJ" type="TCnpj" minOccurs="1"/>
<!--  Numero da nota inicial    -->
<xs:element name="notaInicial" type="TNF" minOccurs="0" maxOccurs="1"/>
<!--  Numero da nota final    -->
<xs:element name="notaFinal" type="TNF" minOccurs="0" maxOccurs="1"/>
<!--  Data de emissao inicial    -->
<xs:element name="emissaoInicial" type="TData" minOccurs="0" maxOccurs="1"/>
<!--  Data de emissao final    -->
<xs:element name="emissaoFinal" type="TData" minOccurs="0" maxOccurs="1"/>
<!--  Serie das notas    -->
<xs:element name="serieNotaFiscal" type="TSerie" minOccurs="1"/>
<!--  Assinatura digital    -->
<xs:element ref="ds:Signature" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="versao" use="required" type="xs:string" fixed="1.0"/>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para Cancelamento de uma NFSe 
-->
<xs:element name="pedCancelaNFSe">
<xs:complexType>
<xs:sequence>
<!--  CNPJ de um contribuinte  -->
<xs:element name="CNPJ" type="TCnpj" minOccurs="1"/>
<!--  Chave de acesso    -->
<xs:element name="chvAcessoNFS-e" type="TChaveAcesso" minOccurs="1"/>
<!--  Motivo   -->
<xs:element name="motivo" type="TMotCanc"/>
<!--  Assinatura digital    -->
<xs:element ref="ds:Signature" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="versao" use="required" type="xs:string" fixed="1.0"/>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para Pedido de uma NFSe 
-->
<xs:element name="pedidoNFSe">
<xs:complexType>
<xs:sequence>
<!--  CNPJ de um contribuinte  -->
<xs:element name="CNPJ" type="TCnpj" minOccurs="1"/>
<!--  Chave de acesso    -->
<xs:element name="chvAcessoNFS-e" type="TChaveAcesso" minOccurs="1"/>
<!--  Assinatura digital    -->
<xs:element ref="ds:Signature" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="versao" use="required" type="xs:string" fixed="1.0"/>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para Consulta do Status de uma NFSe 
-->
<xs:element name="pedConsultaTrans">
<xs:complexType>
<xs:sequence>
<!--  CNPJ de um contribuinte  -->
<xs:element name="CNPJ" type="TCnpj" minOccurs="1"/>
<!--  Chave de acesso    -->
<xs:element name="chvAcessoNFS-e" type="TChaveAcesso" minOccurs="1"/>
<!--  Assinatura digital    -->
<xs:element ref="ds:Signature" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="versao" use="required" type="xs:string" fixed="1.0"/>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para Pedido da imagem de uma NFSe 
-->
<xs:element name="pedidoNFSePNG">
<xs:complexType>
<xs:sequence>
<!--  CNPJ de um contribuinte  -->
<xs:element name="CNPJ" type="TCnpj" minOccurs="1"/>
<!--  Chave de acesso    -->
<xs:element name="chvAcessoNFS-e" type="TChaveAcesso" minOccurs="1"/>
<!--  Assinatura digital    -->
<xs:element ref="ds:Signature" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="versao" use="required" type="xs:string" fixed="1.0"/>
</xs:complexType>
</xs:element>
<!--
 ***********************************************************  
-->
<!--  Definicao de estruturas de dados compostas                    -->
<!--  Definicao da estrutura de dados para uma NFSe  -->
<xs:element name="NFS-e">
<xs:complexType>
<xs:sequence>
<!--  Informacoes sobre uma nota  -->
<xs:element ref="infNFSe"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para as informacoes de uma NFSe 
-->
<xs:element name="infNFSe">
<xs:complexType>
<xs:sequence>
<!--  Dados de identificação da NFSe  -->
<xs:element ref="Id"/>
<!--  Dados do emitente da NFSe  -->
<xs:element ref="prest"/>
<!--  Dados de tomador da NFSe  -->
<xs:element ref="TomS"/>
<!--  Dados do local de entrega   -->
<xs:element ref="dadosDaObra" minOccurs="0" maxOccurs="1"/>
<!--  Dados da transportadora   -->
<xs:element ref="transportadora" minOccurs="0" maxOccurs="1"/>
<!--  Detalhes dos itens de servico da NFSe  -->
<xs:element ref="det" minOccurs="1" maxOccurs="999"/>
<!--  Dados de totalizacao da NFSe  -->
<xs:element ref="total"/>
<!--  Dados de cobranca da NFSe  -->
<xs:element ref="faturas" minOccurs="0" maxOccurs="1"/>
<!--
 Local de tributacao a ser exibido na area de Informacoes Adicionais 
-->
<xs:element name="infAdicLT" type="TCodMunIBGE" minOccurs="1" maxOccurs="1"/>
<!--
 Indica se deve ser exibido Exportacao de Servico na area de Informacoes Adicionais 
-->
<xs:element name="infAdicES" type="TSimNao" minOccurs="0" maxOccurs="1"/>
<!--  Informacoes adicionais de interesse do fisco  -->
<xs:element name="infAdic" type="TString256" minOccurs="0" maxOccurs="999"/>
</xs:sequence>
<!--
 Versão do formato XML da NFSe em está sendo submetido o arquivo XML de lote 
-->
<xs:attribute name="versao" use="required" type="xs:string"/>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para a identificacao de uma NFSe 
-->
<xs:element name="Id">
<xs:complexType>
<xs:sequence>
<!--
 Codigo numerico aleatorio para compor chave de acesso  
-->
<xs:element name="cNFS-e" type="TNumAleatorio"/>
<!--  Modelo de uma NFSe  -->
<xs:element name="mod" type="TModelo"/>
<!--  Serie da nota   -->
<xs:element name="serie" type="TSerie"/>
<!--  Numero da nota   -->
<xs:element name="nNFS-e" type="TNF"/>
<!--  Data de emissao  -->
<xs:element name="dEmi" type="TData"/>
<!--  Hora de emissao  -->
<xs:element name="hEmi" type="THora"/>
<!--  Tipo de uma NFSe  -->
<xs:element name="tpNF" type="TNFSe"/>
<!--  Chave de acesso de uma NFSe  -->
<xs:element name="refNF" type="TChaveAcesso"/>
<!--
 Formato de impressao de uma NFSe: 1-Retrato, 2-Paisagem 
-->
<xs:element name="tpImp" type="TImpressao" minOccurs="0" maxOccurs="1"/>
<!--
 Formato de emissao de uma NFSe: N-Normal, C-Contigencia 
-->
<xs:element name="tpEmis" type="TEmissao" minOccurs="0" maxOccurs="1"/>
<!--  NFSe cancelada (S) ou não (N)  -->
<xs:element name="cancelada" type="TSimNao" minOccurs="0" maxOccurs="1"/>
<!--  Motivo do cancelamento   -->
<xs:element name="motCanc" type="TMotCanc" minOccurs="0" maxOccurs="999"/>
<!--  Data do cancelamento  -->
<xs:element name="dataCanc" type="TData" minOccurs="0" maxOccurs="1"/>
<!--  Numero da nota substitutiva da anulada/cancelada  -->
<xs:element name="notaSub" type="TNF" minOccurs="0" maxOccurs="1"/>
<!--
 Incluir canhoto na imagem da nota: 0 nao incluir, 1 incluir no topo, 2 incluir no rodape 
-->
<xs:element name="canhoto" type="TCharInt" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para o emitente de uma NFSe 
-->
<xs:element name="prest">
<xs:complexType>
<xs:sequence>
<!--  CNPJ    -->
<xs:element name="CNPJ" type="TCnpj"/>
<!--  Nome ou razao social  -->
<xs:element name="xNome" type="TString150"/>
<!--  Nome fantasia  -->
<xs:element name="xFant" type="TString60" minOccurs="0" maxOccurs="1"/>
<!--  Inscricao municipal   -->
<xs:element name="IM" type="TString15"/>
<!--  endereço de correio eletrônico do emitente   -->
<xs:element name="xEmail" type="TString50" minOccurs="0" maxOccurs="1"/>
<!--  URL do site do emitente   -->
<xs:element name="xSite" type="TString50" minOccurs="0" maxOccurs="1"/>
<!--  Endereco do emitente   -->
<xs:element ref="end"/>
<!--  Fone   -->
<xs:element name="fone" type="TFone" minOccurs="0" maxOccurs="1"/>
<!--  Fone alternativo  -->
<xs:element name="fone2" type="TFone" minOccurs="0" maxOccurs="1"/>
<!--  Inscricao Estadual   -->
<xs:element name="IE" type="TString15" minOccurs="0" maxOccurs="1"/>
<!--  Regime tributario   -->
<xs:element name="regimeTrib" type="TCharInt"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para endereco de um emitente de uma NFSe 
-->
<xs:element name="end">
<xs:complexType>
<xs:sequence>
<!--  Logradouro   -->
<xs:element name="xLgr" type="TString100"/>
<!--  Numero   -->
<xs:element name="nro" type="TString6"/>
<!--  Complemento   -->
<xs:element name="xCpl" type="TString100" minOccurs="0" maxOccurs="1"/>
<!--  Bairro   -->
<xs:element name="xBairro" type="TString100"/>
<!--  Codigo do municipio  -->
<xs:element name="cMun" type="TCodMunIBGE"/>
<!--  Nome do municipio  -->
<xs:element name="xMun" type="TString60"/>
<!--  UF  -->
<xs:element name="UF" type="TString2"/>
<!--  CEP   -->
<xs:element name="CEP" type="TCep"/>
<!--  Codigo do Pais    -->
<xs:element name="cPais" type="TcPais"/>
<!--  Pais   -->
<xs:element name="xPais" type="TString100"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para tomador de uma NFSe 
-->
<xs:element name="TomS">
<xs:complexType>
<xs:sequence>
<xs:choice>
<!--  CNPJ de um contribuinte  -->
<xs:element name="CNPJ" type="TCnpj"/>
<!--  CPF de um contribuinte  -->
<xs:element name="CPF" type="TCpf"/>
</xs:choice>
<!--  Nome ou razao social  -->
<xs:element name="xNome" type="TString100" minOccurs="0" maxOccurs="1"/>
<!--  Endereco  -->
<xs:element ref="ender" minOccurs="0" maxOccurs="1"/>
<!--  Endereco de correio eletronico  -->
<xs:element name="xEmail" type="TString120" minOccurs="0" maxOccurs="1"/>
<!--  Inscricao Estadual   -->
<xs:element name="IE" type="TString15" minOccurs="0" maxOccurs="1"/>
<!--  Inscricao municipal   -->
<xs:element name="IM" type="TString15" minOccurs="0" maxOccurs="1"/>
<!--  Inscricao municipal eventual  -->
<xs:element name="IME" type="TString15" minOccurs="0" maxOccurs="1"/>
<!--  Fone   -->
<xs:element name="fone" type="TFone" minOccurs="0" maxOccurs="1"/>
<!--  Fone alternativo   -->
<xs:element name="fone2" type="TFone" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para endereco de um tomador de uma NFSe 
-->
<xs:element name="ender">
<xs:complexType>
<xs:sequence>
<!--  Logradouro   -->
<xs:element name="xLgr" type="TString100" minOccurs="0" maxOccurs="1"/>
<!--  Numero   -->
<xs:element name="nro" type="TString6" minOccurs="0" maxOccurs="1"/>
<!--  Complemento   -->
<xs:element name="xCpl" type="TString100" minOccurs="0" maxOccurs="1"/>
<!--  Bairro   -->
<xs:element name="xBairro" type="TString100" minOccurs="0" maxOccurs="1"/>
<!--  Codigo do municipio    -->
<xs:element name="cMun" type="TCodMunIBGE" minOccurs="0" maxOccurs="1"/>
<!--  Nome do municipio  -->
<xs:element name="xMun" type="TString60" minOccurs="0" maxOccurs="1"/>
<!--  UF  -->
<xs:element name="UF" type="TString2" minOccurs="0" maxOccurs="1"/>
<!--  CEP  -->
<xs:element name="CEP" type="TCep" minOccurs="0" maxOccurs="1"/>
<!--  Codigo de pais   -->
<xs:element name="cPais" type="TcPais" minOccurs="0" maxOccurs="1"/>
<!--  Pais   -->
<xs:element name="xPais" type="TString100" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para endereco de dados da obra 
-->
<xs:element name="dadosDaObra">
<xs:complexType>
<xs:sequence>
<!--  Logradouro   -->
<xs:element name="xLogObra" type="TString100"/>
<!--  Complemento   -->
<xs:element name="xComplObra" type="TString100" minOccurs="0" maxOccurs="1"/>
<!--  Numero   -->
<xs:element name="vNumeroObra" type="TString15" minOccurs="0" maxOccurs="1"/>
<!--  Bairro   -->
<xs:element name="xBairroObra" type="TString100" minOccurs="0" maxOccurs="1"/>
<!--  CEP  -->
<xs:element name="xCepObra" type="TCep" minOccurs="0" maxOccurs="1"/>
<!--  Codigo do municipio  -->
<xs:element name="cCidadeObra" type="TCodMunIBGE"/>
<!--  Nome do municipio  -->
<xs:element name="xCidadeObra" type="TString60"/>
<!--  UF  -->
<xs:element name="xUfObra" type="TString2"/>
<!--  Codigo do Pais   -->
<xs:element name="cPaisObra" type="TcPais"/>
<!--  Nome do Pais   -->
<xs:element name="xPaisObra" type="TString100"/>
<!--  Numero da ART em uma NFSe de construcao civil  -->
<xs:element name="numeroArt" type="TString12" minOccurs="0" maxOccurs="1"/>
<!--
 Numero da matricula no CEI em uma NFSe de construcao civil 
-->
<xs:element name="numeroCei" type="TString12" minOccurs="0" maxOccurs="1"/>
<!--  Numero do projeto em uma NFSe de construcao civil  -->
<xs:element name="numeroProj" type="TString15" minOccurs="0" maxOccurs="1"/>
<!--
 Numero da matricula em uma NFSe de construcao civil 
-->
<xs:element name="numeroMatri" type="TString15" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para transportadora 
-->
<xs:element name="transportadora">
<xs:complexType>
<xs:sequence>
<!--  Nome da transportadora   -->
<xs:element name="xNomeTrans" type="TString100"/>
<!--  CPF/CNPJ da transportadora   -->
<xs:element name="xCpfCnpjTrans" type="TString15" minOccurs="0" maxOccurs="1"/>
<!--  Inscricao Estadual da transportadora   -->
<xs:element name="xInscEstTrans" type="TString15" minOccurs="0" maxOccurs="1"/>
<!--  Placa do automovel da transportadora   -->
<xs:element name="xPlacaTrans" type="TPlacaVeic" minOccurs="0" maxOccurs="1"/>
<!--  Endereco da transportadora  -->
<xs:element name="xEndTrans" type="TString100" minOccurs="0" maxOccurs="1"/>
<!--  Codigo do Municipio da transportadora  -->
<xs:element name="cMunTrans" type="TCodMunIBGE" minOccurs="0" maxOccurs="1"/>
<!--  Nome do Municipio da transportadora  -->
<xs:element name="xMunTrans" type="TString60" minOccurs="0" maxOccurs="1"/>
<!--  UF da transportadora   -->
<xs:element name="xUfTrans" type="TString2" minOccurs="0" maxOccurs="1"/>
<!--  Codigo do Pais da transportadora  -->
<xs:element name="cPaisTrans" type="TcPais" minOccurs="0" maxOccurs="1"/>
<!--  Nome do Pais da transportadora  -->
<xs:element name="xPaisTrans" type="TString100" minOccurs="0" maxOccurs="1"/>
<!--  Tipo do frete   -->
<xs:element name="vTipoFreteTrans" type="TFrete" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para detalhe do servico de uma NFSe 
-->
<xs:element name="det">
<xs:complexType>
<xs:sequence>
<!--  Ordem sequencial do item na nota   -->
<xs:element name="nItem" type="TOrdemSeq"/>
<xs:element ref="serv"/>
<xs:element ref="ISSST" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para detalhe de item de servico de uma NFSe 
-->
<xs:element name="serv">
<xs:complexType>
<xs:sequence>
<!--  Codigo municipal do servico   -->
<xs:element name="cServ" type="TString60"/>
<!--  Codigo do servico conforme Lei 116   -->
<xs:element name="cLCServ" type="TLCServ" minOccurs="0" maxOccurs="1"/>
<!--  Descricao do serviço   -->
<xs:element name="xServ" type="TString256"/>
<!--  Local de tributação do servico  -->
<xs:element name="localTributacao" type="TCodMunIBGE" minOccurs="0" maxOccurs="1"/>
<!--  Local da verificação do resultado do servico   -->
<xs:element name="localVerifResServ" type="TCharInt" minOccurs="0" maxOccurs="1"/>
<!--  Unidade do servico   -->
<xs:element name="uTrib" type="TString2"/>
<!--  Quantidade do servico  -->
<xs:element name="qTrib" type="TDec_1302"/>
<!--  Valor unitario  -->
<xs:element name="vUnit" type="TDec_1302"/>
<!--  Valor do servico  -->
<xs:element name="vServ" type="TDec_1302"/>
<!--  Valor de desconto  -->
<xs:element name="vDesc" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Valor da base de calculo de ISSQN   -->
<xs:element name="vBCISS" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Aliquota do ISSQN  -->
<xs:element name="pISS" type="TDec_0302" minOccurs="0" maxOccurs="1"/>
<!--  Valor do ISSQN  -->
<xs:element name="vISS" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Valor da base de calculo de retencao de INSS   -->
<xs:element name="vBCINSS" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Percentual de retencao de INSS do item de servico   -->
<xs:element name="pRetINSS" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Valor de retencao de INSS do item de servico   -->
<xs:element name="vRetINSS" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Valor de redução da base de calculo   -->
<xs:element name="vRed" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Valor da base de calculo da retencao de IR   -->
<xs:element name="vBCRetIR" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Percentual   -->
<xs:element name="pRetIR" type="TDec_0302" minOccurs="0" maxOccurs="1"/>
<!--  Valor   -->
<xs:element name="vRetIR" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Valor da base de calculo de retencao de COFINS   -->
<xs:element name="vBCCOFINS" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Percentual   -->
<xs:element name="pRetCOFINS" type="TDec_0302" minOccurs="0" maxOccurs="1"/>
<!--  Valor   -->
<xs:element name="vRetCOFINS" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Valor da base de calculo de retencao de CSLL   -->
<xs:element name="vBCCSLL" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Percentual   -->
<xs:element name="pRetCSLL" type="TDec_0302" minOccurs="0" maxOccurs="1"/>
<!--  Valor   -->
<xs:element name="vRetCSLL" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Valor da base de calculo de retencao de PIS-PASEP   -->
<xs:element name="vBCPISPASEP" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Percentual   -->
<xs:element name="pRetPISPASEP" type="TDec_0302" minOccurs="0" maxOccurs="1"/>
<!--  Valor   -->
<xs:element name="vRetPISPASEP" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para informações do ISS por substituicao tributaria em uma NFSe  
-->
<xs:element name="ISSST">
<xs:complexType>
<xs:sequence>
<!--
 Valor da base de calculo por substituicao tributaria 
-->
<xs:element name="vBCST" type="TDec_1302"/>
<!--  Aliquota do ISSQN por substituicao tributaria  -->
<xs:element name="pISSST" type="TDec_0302"/>
<!--  Valor do ISSQN por substituicao tributaria  -->
<xs:element name="vISSST" type="TDec_1302"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para totalizacoes em uma NFSe  
-->
<xs:element name="total">
<xs:complexType>
<xs:sequence>
<!--  Valor total de servico   -->
<xs:element name="vServ" type="TDec_1302"/>
<!--  Valor total de desconto  -->
<xs:element name="vDesc" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Valor total da nota   -->
<xs:element name="vtNF" type="TDec_1302"/>
<!--  Valor liquido total da nota  -->
<xs:element name="vtLiq" type="TDec_1302"/>
<!--  Totalizacoes das retencoes federais na nota  -->
<xs:element ref="Ret" minOccurs="0" maxOccurs="1"/>
<!--  Valor liquido total das faturas  -->
<xs:element name="vtLiqFaturas" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Totalizacoes do ISS  -->
<xs:element ref="ISS"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para valores do ISSQN em uma NFSe  
-->
<xs:element name="ISS">
<xs:complexType>
<xs:sequence>
<!--  Valor da base de calculo de ISSQN   -->
<xs:element name="vBCISS" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Valor do ISSQN   -->
<xs:element name="vISS" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--
 Valor da base de calculo de ISSQN por substituicao tributaria  
-->
<xs:element name="vBCSTISS" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Valor do ISSQN por substituicao tributaria   -->
<xs:element name="vSTISS" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para retencoes em uma NFSe  
-->
<xs:element name="Ret">
<xs:complexType>
<xs:sequence>
<!--  Valor total da retencao de IR  -->
<xs:element name="vRetIR" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Valor total da retencao de PIS-PASEP  -->
<xs:element name="vRetPISPASEP" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Valor total da retencao de COFINS  -->
<xs:element name="vRetCOFINS" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Valor total da retencao de CSLL  -->
<xs:element name="vRetCSLL" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
<!--  Valor total da retencao de INSS   -->
<xs:element name="vRetINSS" type="TDec_1302" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para informacoes de faturas em uma NFSe  
-->
<xs:element name="faturas">
<xs:complexType>
<xs:sequence>
<xs:element ref="fat" minOccurs="1" maxOccurs="999"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
 Definicao da estrutura de dados para informacoes sobre faturas em uma NFSe  
-->
<xs:element name="fat">
<xs:complexType>
<xs:sequence>
<!--  Ordenacao da fatura   -->
<xs:element name="nItem" type="TOrdemSeq"/>
<!--  Numero da fatura   -->
<xs:element name="nFat" type="TNumFatura"/>
<!--  Data de vencimento    -->
<xs:element name="dVenc" type="TData" minOccurs="0" maxOccurs="1"/>
<!--  Valor da fatura   -->
<xs:element name="vFat" type="TDec_1302"/>
<!--  Tipo vencimento fatura   -->
<xs:element name="tipoVencFat" type="TCharInt" minOccurs="0" maxOccurs="1"/>
<!--  Descrição tipo vencimento fatura   -->
<xs:element name="descTipoVencFat" type="TString15" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!--
 *********************************************************** 
-->
<!--  Definicao dos tipos de dados básicos da NFSe                 -->
<!--  Tipo para Codigo Postal   -->
<xs:simpleType name="TCep">
<xs:annotation>
<xs:documentation>Tipo para Codigo Postal</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[0-9]{8}"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para Caracter numerico   -->
<xs:simpleType name="TCharInt">
<xs:annotation>
<xs:documentation>Tipo para caracter numerico</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[0-9]{1}"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para chave de acesso de uma NFSe   -->
<xs:simpleType name="TChaveAcesso">
<xs:annotation>
<xs:documentation>Tipo para chave de acesso</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="39"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo Número do CNPJ   -->
<xs:simpleType name="TCnpj">
<xs:annotation>
<xs:documentation>Tipo Número do CNPJ</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[0-9]{14}"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo Código do Município da tabela do IBGE    -->
<xs:simpleType name="TCodMunIBGE">
<xs:annotation>
<xs:documentation>Tipo Código do Município da tabela do IBGE</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[0-9]{7}"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para codigo do pais  -->
<xs:simpleType name="TcPais">
<xs:annotation>
<xs:documentation>Tipo para Codigo do Pais</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[0-9]{1,5}"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo Número do CPF   -->
<xs:simpleType name="TCpf">
<xs:annotation>
<xs:documentation>Tipo Número do CPF</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[0-9]{11}"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo data no formato AAAA-MM-DD   -->
<xs:simpleType name="TData">
<xs:annotation>
<xs:documentation>Tipo data AAAA-MM-DD</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:date">
<xs:pattern value="\d{4}-\d{2}-\d{2}"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo data no formato AAAA-MM-DD HH:MM:SS  -->
<xs:simpleType name="TDataHora">
<xs:annotation>
<xs:documentation>Tipo datetime AAAA-MM-DD HH:MM:SS</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
<xs:pattern value="\d{4}-\d{2}-\d{2}(\s\d{2}:\d{2}:\d{2})?"/>
</xs:restriction>
</xs:simpleType>
<!--
 Tipo Decimal com 5 dígitos, sendo 3 de corpo e 2 decimais   
-->
<xs:simpleType name="TDec_0302">
<xs:annotation>
<xs:documentation>
Tipo Decimal com 5 dígitos, sendo 3 de corpo e 2 decimais
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:minLength value="0"/>
<xs:whiteSpace value="preserve"/>
<xs:pattern value="|0|0\.[0-9]{2}|[1-9]{1}[0-9]{0,2}(\.[0-9]{2})?"/>
</xs:restriction>
</xs:simpleType>
<!--
 Tipo Decimal com 15 dígitos, sendo 13 de corpo e 2 decimais   
-->
<xs:simpleType name="TDec_1302">
<xs:annotation>
<xs:documentation>
Tipo Decimal com 15 dígitos, sendo 13 de corpo e 2 decimais
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:minLength value="0"/>
<xs:whiteSpace value="preserve"/>
<xs:pattern value="|0|0\.[0-9]{2}|[1-9]{1}[0-9]{0,12}(\.[0-9]{2})?"/>
</xs:restriction>
</xs:simpleType>
<!--
 Tipo para forma de emissao de uma NFSe: N-Normal, C-Contigencia 
-->
<xs:simpleType name="TEmissao">
<xs:annotation>
<xs:documentation>Tipo para forma de emissao</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[NC]{1}"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para numero do telefone  -->
<xs:simpleType name="TFone">
<xs:annotation>
<xs:documentation>Tipo para numero do telefone</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="|[0-9]{10,15}"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para frete de transportadora  -->
<xs:simpleType name="TFrete">
<xs:annotation>
<xs:documentation>Tipo para frete de transportadora</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[0-9]{1}"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo hora no formato HH:MM  -->
<xs:simpleType name="THora">
<xs:annotation>
<xs:documentation>Tipo time HH:MM</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
<xs:pattern value="\d{2}:\d{2}"/>
</xs:restriction>
</xs:simpleType>
<!--
 Tipo para formato de impressao de uma NFSe: 1-Retrato, 2-Paisagem 
-->
<xs:simpleType name="TImpressao">
<xs:annotation>
<xs:documentation>Tipo para formato de impressao</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer">
<!--
 Em Caxias uma NFSe somente pode ser impressa no modo retrato  
-->
<xs:minInclusive value="1"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para Lei Complementar 116  -->
<xs:simpleType name="TLCServ">
<xs:annotation>
<xs:documentation>Tipo para Lei Complementar 116</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger">
<xs:maxInclusive value="9999"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para modelo de uma NFSe  -->
<xs:simpleType name="TModelo">
<xs:annotation>
<xs:documentation>Tipo para modelo de uma NFSe</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="2"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para motivo de cancelamento   -->
<xs:simpleType name="TMotCanc">
<xs:annotation>
<xs:documentation>Tipo para motivo de cancelamento</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[0-9]{1}"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo Número do Documento Fiscal   -->
<xs:simpleType name="TNF">
<xs:annotation>
<xs:documentation>Tipo Número do Documento Fiscal</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[0-9]{0,9}"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para uma NFSe  -->
<xs:simpleType name="TNFSe">
<xs:annotation>
<xs:documentation>Tipo para uma NFSe</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:integer">
<!--  Em Caxias uma NFSe somente pode ser de Saída   -->
<xs:minInclusive value="1"/>
<xs:maxInclusive value="1"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para numero aleatorio  -->
<xs:simpleType name="TNumAleatorio">
<xs:annotation>
<xs:documentation>Tipo para numero aleatorio</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger">
<xs:maxInclusive value="999999999"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo Número de Fatura   -->
<xs:simpleType name="TNumFatura">
<xs:annotation>
<xs:documentation>Tipo Número de Fatura em NFS-e</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="12"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para ordem sequencial de itens  -->
<xs:simpleType name="TOrdemSeq">
<xs:annotation>
<xs:documentation>Tipo para ordem sequencial de itens</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger">
<xs:maxInclusive value="999"/>
</xs:restriction>
</xs:simpleType>
<!--
 Tipo para placa de veiculo: String de tamanho maximo 7   
-->
<xs:simpleType name="TPlacaVeic">
<xs:annotation>
<xs:documentation>
Tipo String para placa de veiculo com tamanho maximo 7
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[a-zA-Z]{2,4}[0-9]{3,4}"/>
</xs:restriction>
</xs:simpleType>
<!--
 Tipo para serie de notas: String de tamanho maximo 3   
-->
<xs:simpleType name="TSerie">
<xs:annotation>
<xs:documentation>Tipo String de tamanho maximo 3</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para Sim/Nao  -->
<xs:simpleType name="TSimNao">
<xs:annotation>
<xs:documentation>Tipo para Sim/Nao</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[SN]{1}"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para situacao do cancelamento de uma NFSe  -->
<xs:simpleType name="TSituacaoCancelamentoNota">
<xs:annotation>
<xs:documentation>Tipo para situacao de cancelamento de uma NFSe</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger">
<xs:maxInclusive value="999"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para situacao de um lote de NFSe  -->
<xs:simpleType name="TSituacaoLote">
<xs:annotation>
<xs:documentation>Tipo para situacao de um lote de NFSe</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger">
<xs:maxInclusive value="999"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para situacao de uma NFSe  -->
<xs:simpleType name="TSituacaoNFSe">
<xs:annotation>
<xs:documentation>Tipo para situacao de uma NFSe</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:token">
<xs:pattern value="[0-9]{1}"/>
</xs:restriction>
</xs:simpleType>
<!--
 Tipo para situacao de uma nota dentro de um lote submetido 
-->
<xs:simpleType name="TSituacaoNota">
<xs:annotation>
<xs:documentation>
Tipo para situacao de uma nota dentro de um lote submetido
</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:positiveInteger">
<xs:maxInclusive value="999"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para string com tamanho maximo 2    -->
<xs:simpleType name="TString2">
<xs:annotation>
<xs:documentation>Tipo para string de tamanho maximo 2</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="2"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para string com tamanho maximo 3    -->
<xs:simpleType name="TString3">
<xs:annotation>
<xs:documentation>Tipo para string de tamanho maximo 3</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="3"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para string com tamanho maximo 5    -->
<xs:simpleType name="TString5">
<xs:annotation>
<xs:documentation>Tipo para string de tamanho maximo 5</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="5"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para string com tamanho maximo 6    -->
<xs:simpleType name="TString6">
<xs:annotation>
<xs:documentation>Tipo para string de tamanho maximo 6</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="6"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para string com tamanho maximo 12    -->
<xs:simpleType name="TString12">
<xs:annotation>
<xs:documentation>Tipo para string de tamanho maximo 12</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="12"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para string com tamanho maximo 13    -->
<xs:simpleType name="TString13">
<xs:annotation>
<xs:documentation>Tipo para string de tamanho maximo 13</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="13"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para string com tamanho maximo 15    -->
<xs:simpleType name="TString15">
<xs:annotation>
<xs:documentation>Tipo para string de tamanho maximo 15</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="15"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para string com tamanho maximo 50    -->
<xs:simpleType name="TString50">
<xs:annotation>
<xs:documentation>Tipo para string de tamanho maximo 50</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para string com tamanho maximo 60    -->
<xs:simpleType name="TString60">
<xs:annotation>
<xs:documentation>Tipo para string de tamanho maximo 60</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="60"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para string com tamanho maximo 100    -->
<xs:simpleType name="TString100">
<xs:annotation>
<xs:documentation>Tipo para string de tamanho maximo 100</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="100"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para string com tamanho maximo 120    -->
<xs:simpleType name="TString120">
<xs:annotation>
<xs:documentation>Tipo para string de tamanho maximo 120</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="120"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para string com tamanho maximo 150    -->
<xs:simpleType name="TString150">
<xs:annotation>
<xs:documentation>Tipo para string de tamanho maximo 150</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="150"/>
</xs:restriction>
</xs:simpleType>
<!--  Tipo para string com tamanho maximo 256    -->
<xs:simpleType name="TString256">
<xs:annotation>
<xs:documentation>Tipo para string de tamanho maximo 256</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:maxLength value="256"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>