Bom dia pessoal,
Quando o GRC gera XML para parceiros B2B o cabeçalho começa assim:
<? xml version = "1.0" encoding = " UTF-8" >
<nfeProc versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<NFe xmlns="http://www.portalfiscal.inf.br/nfe"> ...
Observe como ambos os elementos nfeProc e NFe têm namespace idênticos.
Quando esta mensagem é enviada para PI , por algum motivo este namespace “redundante” de NFe é descartado e chega ao PI dessa forma::
<? xml version = "1.0" encoding = " UTF-8" >
<nfeProc versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
<NFe> ...
Mesmo que este XML seja validado corretamente pelo SEFAZ um dos nossos clientes está exigindo a namespace “redundante” no elemento NFe (xmlns =" http://www.portalfiscal.inf.br/nfe). Tentei adicionar com um mapeamento XSLT no PI , mas como o nome é redundante o sistema resiste em adicionar. Exemplo de mapeamento XSLT. :
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl : copy >
</xsl : template>
<xsl:template match="*[local-name() = 'NFe']" priority="1">
<xsl:element name="{local-name()}" namespace="http://www.portalfiscal.inf.br/nfe">
<xsl:apply-templates select="@*|node()"/>
</xsl: element>
</xsl : template>
</xsl: stylesheet>
Este exemplo só funciona se eu mudar o namespace para ser ligeiramente diferente do namespace do elemento raiz nfeProc
Alguém tem o mesmo problema? Como você trabalha em torno dele?
Muito obrigado,
Aaron