<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
            targetNamespace="http://www.nfsebrasil.net.br/nfse/rps/xsd/rps.xsd"
            xmlns="http://www.nfsebrasil.net.br/nfse/rps/xsd/rps.xsd"
            xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
            attributeFormDefault="unqualified"
            elementFormDefault="qualified">
    <xs:element name="EnviarLoteRpsEnvio">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="LoteRps">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="NumeroLote" type="xs:integer"/>
                            <xs:element name="Cnpj">
                                <xs:simpleType>
                                    <xs:restriction base="xs:long">
                                        <xs:pattern value="[0-9]{14}"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name="InscricaoMunicipal">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:pattern value="[0-9]{0,15}"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name="QuantidadeRps" type="xs:integer"/>
                            <xs:element name="ListaRps">
                                <xs:complexType>
									<xs:sequence>
										<xs:element name="Rps" xmlns="http://www.abrasf.org.br/ABRASF/arquivos/nfse.xsd" maxOccurs="unbounded">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="InfRps">
														<xs:complexType>
															<xs:sequence>
																<xs:element name="IdentificacaoRps">
																	<xs:complexType>
																		<xs:sequence>
																			<xs:element name="Numero" type="xs:integer"/>
																			<xs:element name="Serie">
																				<xs:simpleType>
																					<xs:restriction base="xs:string">
																						<xs:pattern value="[0-9]{0,5}"/>
																					</xs:restriction>
																				</xs:simpleType>
																			</xs:element>
																			<xs:element name="Tipo" type="xs:integer"/>
																		</xs:sequence>
																	</xs:complexType>
																</xs:element>
																<xs:element name="DataEmissao" type="xs:dateTime"/>
																<xs:element name="NaturezaOperacao">
																	<xs:simpleType>
																		<xs:restriction base="xs:integer">
																			<xs:enumeration value="1"/>
																			<xs:enumeration value="2"/>
																		</xs:restriction>
																	</xs:simpleType>
																</xs:element>
																<xs:element name="Status">
																	<xs:simpleType>
																		<xs:restriction base="xs:integer">
																			<xs:enumeration value="1"/>
																			<xs:enumeration value="2"/>
																		</xs:restriction>
																	</xs:simpleType>
																</xs:element>
																<xs:element name="Servico">
																	<xs:complexType>
																		<xs:sequence>
																			<xs:element name="Valores">
																				<xs:complexType>
																					<xs:sequence>
																						<xs:element name="ValorServicos">
																							<xs:simpleType>
																								<xs:restriction base="xs:decimal">
																									<xs:pattern value="[0-9]{1,15}\.[0-9]{2}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="ValorDeducoes">
																							<xs:simpleType>
																								<xs:restriction base="xs:decimal">
																									<xs:pattern value="[0-9]{1,15}\.[0-9]{2}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="ValorPis">
																							<xs:simpleType>
																								<xs:restriction base="xs:decimal">
																									<xs:pattern value="[0-9]{1,15}\.[0-9]{2}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="ValorCofins">
																							<xs:simpleType>
																								<xs:restriction base="xs:decimal">
																									<xs:pattern value="[0-9]{1,15}\.[0-9]{2}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="ValorInss">
																							<xs:simpleType>
																								<xs:restriction base="xs:decimal">
																									<xs:pattern value="[0-9]{1,15}\.[0-9]{2}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="ValorIr">
																							<xs:simpleType>
																								<xs:restriction base="xs:decimal">
																									<xs:pattern value="[0-9]{1,15}\.[0-9]{2}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="ValorCsll">
																							<xs:simpleType>
																								<xs:restriction base="xs:decimal">
																									<xs:pattern value="[0-9]{1,15}\.[0-9]{2}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="IssRetido">
																							<xs:simpleType>
																								<xs:restriction base="xs:integer">
																									<xs:enumeration value="1"/>
																									<xs:enumeration value="2"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="ValorIss">
																							<xs:simpleType>
																								<xs:restriction base="xs:decimal">
																									<xs:pattern value="[0-9]{1,15}\.[0-9]{2}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="OutrasRetencoes">
																							<xs:simpleType>
																								<xs:restriction base="xs:decimal">
																									<xs:pattern value="[0-9]{1,15}\.[0-9]{2}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="Aliquota">
																							<xs:simpleType>
																								<xs:restriction base="xs:decimal">
																									<xs:pattern value="[0-9]{1,3}\.[0-9]{2}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="DescontoIncondicionado">
																							<xs:simpleType>
																								<xs:restriction base="xs:decimal">
																									<xs:pattern value="[0-9]{1,15}\.[0-9]{2}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="DescontoCondicionado">
																							<xs:simpleType>
																								<xs:restriction base="xs:decimal">
																									<xs:pattern value="[0-9]{1,15}\.[0-9]{2}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																					</xs:sequence>
																				</xs:complexType>
																			</xs:element>
																			<xs:element name="CodigoTributacaoMunicipio" type="xs:string"/>
																			<xs:element name="CodigoCnae" type="xs:string"/>
																			<xs:element name="Discriminacao">
																				<xs:simpleType>
																					<xs:restriction base="xs:string">
																						<xs:maxLength value="2000"/>
																						<xs:minLength value="1"/>
																					</xs:restriction>
																				</xs:simpleType>
																			</xs:element>
																			<xs:element name="Observacoes" minOccurs="0">
																				<xs:simpleType>
																					<xs:restriction base="xs:string">
																						<xs:maxLength value="2000"/>
																						<xs:minLength value="1"/>
																					</xs:restriction>
																				</xs:simpleType>
																			</xs:element>
																			<xs:element name="CodigoMunicipio">
																				<xs:simpleType>
																					<xs:restriction base="xs:int">
																						<xs:pattern value="[0-9]{7}"/>
																					</xs:restriction>
																				</xs:simpleType>
																			</xs:element>
																		</xs:sequence>
																	</xs:complexType>
																</xs:element>
																<xs:element name="Prestador">
																	<xs:complexType>
																		<xs:sequence>
																			<xs:element name="Cnpj">
																				<xs:simpleType>
																					<xs:restriction base="xs:string">
																						<xs:pattern value="[0-9]{14}"/>
																					</xs:restriction>
																				</xs:simpleType>
																			</xs:element>
																			<xs:element name="InscricaoMunicipal" maxOccurs="1" minOccurs="0">
																				<xs:simpleType>
																					<xs:restriction base="xs:string">
																						<xs:pattern value="[0-9]{0,15}"/>
																					</xs:restriction>
																				</xs:simpleType>
																			</xs:element>
																			<xs:element name="InscricaoEstadual" maxOccurs="1" minOccurs="0">
																				<xs:simpleType>
																					<xs:restriction base="xs:string">
																						<xs:pattern value="[0-9]{0,15}"/>
																					</xs:restriction>
																				</xs:simpleType>
																			</xs:element>
																		</xs:sequence>
																	</xs:complexType>
																</xs:element>
																<xs:element name="Tomador">
																	<xs:complexType>
																		<xs:sequence>
																			<xs:element name="IdentificacaoTomador">
																				<xs:complexType>
																					<xs:sequence>
																						<xs:element name="CpfCnpj">
																							<xs:complexType>
																								<xs:sequence>
																									<xs:element name="Cnpj" minOccurs="0">
																										<xs:simpleType>
																											<xs:restriction base="xs:string">
																												<xs:pattern value="[0-9]{11,14}"/>
																											</xs:restriction>
																										</xs:simpleType>
																									</xs:element>
																									<xs:element name="Cpf" minOccurs="0">
																										<xs:simpleType>
																											<xs:restriction base="xs:string">
																												<xs:pattern value="[0-9]{11,14}"/>
																											</xs:restriction>
																										</xs:simpleType>
																									</xs:element>
																								</xs:sequence>
																							</xs:complexType>
																						</xs:element>
																						<xs:element name="InscricaoMunicipal" maxOccurs="1" minOccurs="0">
																							<xs:simpleType>
																								<xs:restriction base="xs:string">
																									<xs:pattern value="[0-9]{0,15}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="InscricaoEstadual" maxOccurs="1" minOccurs="0">
																							<xs:simpleType>
																								<xs:restriction base="xs:string">
																									<xs:pattern value="[0-9]{0,15}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																					</xs:sequence>
																				</xs:complexType>
																			</xs:element>
																			<xs:element name="RazaoSocial">
																				<xs:simpleType>
																					<xs:restriction base="xs:string">
																						<xs:minLength value="1"/>
																						<xs:maxLength value="100"/>
																					</xs:restriction>
																				</xs:simpleType>
																			</xs:element>
																			<xs:element name="Endereco">
																				<xs:complexType>
																					<xs:sequence>
																						<xs:element name="Endereco" minOccurs="0">
																							<xs:simpleType>
																								<xs:restriction base="xs:string">
																									<xs:maxLength value="100"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="Numero" minOccurs="0">
																							<xs:simpleType>
																								<xs:restriction base="xs:string">
																									<xs:pattern value="[A-Za-z0-9]{0,20}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="Complemento" minOccurs="0">
																							<xs:simpleType>
																								<xs:restriction base="xs:string">
																									<xs:maxLength value="60"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="Bairro" minOccurs="0">
																							<xs:simpleType>
																								<xs:restriction base="xs:string">
																									<xs:maxLength value="50"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="CodigoMunicipio" minOccurs="0">
																							<xs:simpleType>
																								<xs:union>
																									<xs:simpleType>
																										<xs:restriction base="xs:string">
																											<xs:length value="0"/>
																										</xs:restriction>
																									</xs:simpleType>
																									<xs:simpleType>
																										<xs:restriction base="xs:int">
																											<xs:pattern value="[0-9]{7}"/>
																										</xs:restriction>
																									</xs:simpleType>
																								</xs:union>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="Uf" minOccurs="0">
																							<xs:simpleType>
																								<xs:restriction base="xs:string">
																									<xs:pattern value="[A-Z]{2}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																						<xs:element name="Cep" minOccurs="0">
																							<xs:simpleType>
																								<xs:restriction base="xs:string">
																									<xs:pattern value="[0-9]{8}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																					</xs:sequence>
																				</xs:complexType>
																			</xs:element>
																			<xs:element name="Email">
																				<xs:simpleType>
																					<xs:restriction base="xs:string">
																						<xs:maxLength value="255"/>
																					</xs:restriction>
																				</xs:simpleType>
																			</xs:element>
																			<xs:element name="Telefone">
																				<xs:simpleType>
																					<xs:restriction base="xs:string">
																						<xs:maxLength value="11"/>
																					</xs:restriction>
																				</xs:simpleType>
																			</xs:element>
																		</xs:sequence>
																	</xs:complexType>
																</xs:element>
																<xs:element name="IntermediarioServico" minOccurs="0">
																	<xs:complexType>
																		<xs:sequence>
																			<xs:element name="RazaoSocial" minOccurs="0">
																				<xs:simpleType>
																					<xs:restriction base="xs:string">
																						<xs:maxLength value="100"/>
																					</xs:restriction>
																				</xs:simpleType>
																			</xs:element>
																			<xs:element name="CpfCnpj">
																				<xs:complexType>
																					<xs:sequence>
																						<xs:element name="Cnpj" minOccurs="0">
																							<xs:simpleType>
																								<xs:restriction base="xs:string">
																									<xs:pattern value="[0-9]{11,14}"/>
																								</xs:restriction>
																							</xs:simpleType>
																						</xs:element>
																					</xs:sequence>
																				</xs:complexType>
																			</xs:element>
																			<xs:element name="InscricaoMunicipal" minOccurs="0">
																				<xs:simpleType>
																					<xs:restriction base="xs:string">
																						<xs:pattern value="[0-9]{0,15}"/>
																					</xs:restriction>
																				</xs:simpleType>
																			</xs:element>
																		</xs:sequence>
																	</xs:complexType>
																</xs:element>
																<xs:element name="ConstrucaoCivil" minOccurs="0">
																	<xs:complexType>
																		<xs:sequence>
																			<xs:element name="CodigoObra" minOccurs="0">
																				<xs:simpleType>
																					<xs:restriction base="xs:string">
																						<xs:pattern value="[A-Za-z0-9]{0,15}"/>
																					</xs:restriction>
																				</xs:simpleType>
																			</xs:element>
																			<xs:element name="Art" minOccurs="0">
																				<xs:simpleType>
																					<xs:restriction base="xs:string">
																						<xs:pattern value="[A-Za-z0-9]{0,15}"/>
																					</xs:restriction>
																				</xs:simpleType>
																			</xs:element>
																		</xs:sequence>
																	</xs:complexType>
																</xs:element>
															</xs:sequence>
															<xs:attribute name="Id" type="xs:int" use="required"/>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
                                </xs:complexType>
                                <xs:unique name="ucIdRPS">
                                    <xs:selector xpath="Rps"/>
                                    <xs:field xpath="InfRps/@Id"/>
                                </xs:unique>
                                <xs:unique name="ucNumRPS">
                                    <xs:selector xpath="Rps"/>
                                    <xs:field xpath="InfRps/IdentificacaoRps/Numero"/>
                                </xs:unique>
                            </xs:element>
                        </xs:sequence>
                        <xs:attribute name="versao" type="xs:decimal" use="required"/>
                        <xs:attribute name="codMunicipio" use="required">
                            <xs:simpleType>
                                <xs:restriction base="xs:int">
                                    <xs:pattern value="[0-9]{7}"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:attribute>
                        <xs:attribute name="Id" type="xs:integer" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>