XSLT, XPATH e NFSe
Prezados,
ainda não encontrei em local algum alguém mencionando esse artificio. Para quem não sabe, os Browsers tem a capacidade de aplicar um StyleSheet aos XML's assim como fazem com .CSS e .HTML. Essa funcionalidade é possível graças ao XPATH. O XPATH é uma sintaxe de pesquisa do elementos do XML. E funciona para qualquer membro da família XHTML também. Um stylesheet é informado no XML usando a sintaxe abaixo: Código:
<?xml version='1.0' encoding='ISO-8859-1'?> Isso causa erro na maioria dos Browsers, pois existem caracteres ISO-8859 no texto. Como o XML é restrito, o browser não permite enganos. Isso torna o abaixo XML não amigável, por causa dos acentos: Código:
<?xml version='1.0' encoding='UTF-8'?> http://www.mediafire.com/file/zt42z42zzzo/nfse_xsl.zip Com esse arquivo você pode entender o funcionamento e adaptar para sua necessidade. Att, Luiz Vaz |
Opa,
Esqueci de mencionar que a grande sacada é que o NFSE possui um namespace declarado como: xmlns="http://www.abrasf.org.br/nfse.xsd" Isso faz com que você tenha que definir no XSLT esse namespace para poder encontrar os elementos. A definição é simplesmente assim: xmlns:a="http://www.abrasf.org.br/nfse.xsd" Usando esse namespace "a:" você pode encontrar os elementos no XML assim: <xsl:template match="a:GerarNfseResposta"> <xsl:apply-templates select="a:ListaNfse/a:CompNfse/a:Nfse/a:InfNfse" /> </xsl:template> Aqui estão algumas fontes sobre XSLT e XPATH: |
Pessoal,
com o código abaixo consegui aplicar o XSL dinamicamente no XML usando PHP. São menos de 50 linhas de código. O resto está todo no XML e XSL. Código:
# print.php?u=$1&n=$2&v=$3 Lembrando que, o arquivo XML da NFSe está com Encoding UTF-8. Isso está errado, pois a NFSe vem com caracteres ISO-8859-1 no corpo. Portanto, façam a troca de UTF-8 para ISO-8859-1 antes chamarem as funções no PHP. Caso contrário, receberão alguns warnings na execução. Abaixo um Link de exemplo: :: NFS-e - Nota Fiscal de Serviços eletrônica :: Att, Luiz Vaz |
5 Anexo(s)
Para quem deseja dar uma olhada no código, segue em anexo o xml stylesheet.
O stylesheet é o nfse.xml. Os demais arquivos são usados como informação dos campos: CNAE (Atividade), SUBCNAE (Sub-Atividade), REGIME TRIBUTÁRIO, IBGE (Cidades). Att, Luiz Vaz |
Horários baseados na GMT -2. Agora são 18:12. |
vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.3.0