我 有一个问题。我需要将XML的特定标记移动到另一个标记,但是当我移动它时我需要清除此标记。
具体来说,我需要移动以下标记和您的内容<ns1:eSocial xmlns:ns1="http://www.esocial.gov.br/schema/evt/evtTabEstab/v02_03_00">
并将其放在此标记<ns0:evento Id=""/>
中。
像这样:
<ns0:evento Id="">
<ns1:eSocial xmlns:ns1="http://www.esocial.gov.br/schema/evt/evtTabEstab/v02_03_00">
.
.
.
</ns1:eSocial>
</ns0:evento>
请参阅以下XML:
<?xml version="1.0" encoding="UTF-8"?>
<ns0:eSocial xmlns:ns0="http://www.esocial.gov.br/schema/lote/eventos/envio/v1_1_1">
<ns0:envioLoteEventos grupo="">
<ns0:ideEmpregador>
<ns0:tpInsc/>
<ns0:nrInsc/>
</ns0:ideEmpregador>
<ns0:ideTransmissor>
<ns0:tpInsc/>
<ns0:nrInsc/>
</ns0:ideTransmissor>
<ns0:eventos>
<ns0:evento Id=""/>
<ns1:eSocial xmlns:ns1="http://www.esocial.gov.br/schema/evt/evtTabEstab/v02_03_00">
<ns1:evtTabEstab Id="">
<ns1:ideEvento>
<ns1:tpAmb/>
<ns1:procEmi/>
<ns1:verProc/>
</ns1:ideEvento>
<ns1:ideEmpregador>
<ns1:tpInsc/>
<ns1:nrInsc/>
</ns1:ideEmpregador>
<ns1:infoEstab>
<ns1:inclusao>
<ns1:ideEstab>
<ns1:tpInsc/>
<ns1:nrInsc/>
<ns1:iniValid/>
<ns1:fimValid/>
</ns1:ideEstab>
<ns1:dadosEstab>
<ns1:cnaePrep/>
<ns1:aliqGilrat>
<ns1:aliqRat/>
<ns1:fap/>
<ns1:aliqRatAjust/>
<ns1:procAdmJudRat>
<ns1:tpProc/>
<ns1:nrProc/>
<ns1:codSusp/>
</ns1:procAdmJudRat>
<ns1:procAdmJudFap>
<ns1:tpProc/>
<ns1:nrProc/>
<ns1:codSusp/>
</ns1:procAdmJudFap>
</ns1:aliqGilrat>
<ns1:infoCaepf>
<ns1:tpCaepf/>
</ns1:infoCaepf>
<ns1:infoObra>
<ns1:indSubstPatrObra/>
</ns1:infoObra>
<ns1:infoTrab>
<ns1:regPt/>
<ns1:infoApr>
<ns1:contApr/>
<ns1:nrProcJud/>
<ns1:contEntEd/>
<ns1:infoEntEduc>
<ns1:nrInsc/>
</ns1:infoEntEduc>
</ns1:infoApr>
<ns1:infoPCD>
<ns1:contPCD/>
<ns1:nrProcJud/>
</ns1:infoPCD>
</ns1:infoTrab>
</ns1:dadosEstab>
</ns1:inclusao>
<ns1:alteracao>
<ns1:ideEstab>
<ns1:tpInsc/>
<ns1:nrInsc/>
<ns1:iniValid/>
<ns1:fimValid/>
</ns1:ideEstab>
<ns1:dadosEstab>
<ns1:cnaePrep/>
<ns1:aliqGilrat>
<ns1:aliqRat/>
<ns1:fap/>
<ns1:aliqRatAjust/>
<ns1:procAdmJudRat>
<ns1:tpProc/>
<ns1:nrProc/>
<ns1:codSusp/>
</ns1:procAdmJudRat>
<ns1:procAdmJudFap>
<ns1:tpProc/>
<ns1:nrProc/>
<ns1:codSusp/>
</ns1:procAdmJudFap>
</ns1:aliqGilrat>
<ns1:infoCaepf>
<ns1:tpCaepf/>
</ns1:infoCaepf>
<ns1:infoObra>
<ns1:indSubstPatrObra/>
</ns1:infoObra>
<ns1:infoTrab>
<ns1:regPt/>
<ns1:infoApr>
<ns1:contApr/>
<ns1:nrProcJud/>
<ns1:contEntEd/>
<ns1:infoEntEduc>
<ns1:nrInsc/>
</ns1:infoEntEduc>
</ns1:infoApr>
<ns1:infoPCD>
<ns1:contPCD/>
<ns1:nrProcJud/>
</ns1:infoPCD>
</ns1:infoTrab>
</ns1:dadosEstab>
<ns1:novaValidade>
<ns1:iniValid/>
<ns1:fimValid/>
</ns1:novaValidade>
</ns1:alteracao>
<ns1:exclusao>
<ns1:ideEstab>
<ns1:tpInsc/>
<ns1:nrInsc/>
<ns1:iniValid/>
<ns1:fimValid/>
</ns1:ideEstab>
</ns1:exclusao>
</ns1:infoEstab>
</ns1:evtTabEstab>
<ns2:Signature Id="" xmlns:ns2="http://www.w3.org/2000/09/xmldsig#">
<ns2:SignedInfo Id="">
<ns2:CanonicalizationMethod Algorithm=""/>
<ns2:SignatureMethod Algorithm="">
<ns2:HMACOutputLength/>
</ns2:SignatureMethod>
<ns2:Reference Id="" URI="" Type="">
<ns2:Transforms>
<ns2:Transform Algorithm="">
<ns2:XPath/>
</ns2:Transform>
</ns2:Transforms>
<ns2:DigestMethod Algorithm=""/>
<ns2:DigestValue/>
</ns2:Reference>
</ns2:SignedInfo>
<ns2:SignatureValue Id=""/>
<ns2:KeyInfo Id="">
<ns2:KeyName/>
<ns2:KeyValue>
<ns2:DSAKeyValue>
<ns2:P/>
<ns2:Q/>
<ns2:G/>
<ns2:Y/>
<ns2:J/>
<ns2:Seed/>
<ns2:PgenCounter/>
</ns2:DSAKeyValue>
<ns2:RSAKeyValue>
<ns2:Modulus/>
<ns2:Exponent/>
</ns2:RSAKeyValue>
</ns2:KeyValue>
<ns2:RetrievalMethod URI="" Type="">
<ns2:Transforms>
<ns2:Transform Algorithm="">
<ns2:XPath/>
</ns2:Transform>
</ns2:Transforms>
</ns2:RetrievalMethod>
<ns2:X509Data>
<ns2:X509IssuerSerial>
<ns2:X509IssuerName/>
<ns2:X509SerialNumber/>
</ns2:X509IssuerSerial>
<ns2:X509SKI/>
<ns2:X509SubjectName/>
<ns2:X509Certificate/>
<ns2:X509CRL/>
</ns2:X509Data>
<ns2:PGPData>
<ns2:PGPKeyID/>
<ns2:PGPKeyPacket/>
</ns2:PGPData>
<ns2:SPKIData>
<ns2:SPKISexp/>
</ns2:SPKIData>
<ns2:MgmtData/>
</ns2:KeyInfo>
<ns2:Object Id="" MimeType="" Encoding=""/>
</ns2:Signature>
</ns1:eSocial>
</ns0:eventos>
</ns0:envioLoteEventos>
</ns0:eSocial>
有人帮帮我吗?我不知道如何创建XSLT。
答案 0 :(得分:0)
此XSLT-1.0模板将所有ns1:eSocial
个元素放在<ns0:evento Id="">
个元素中:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns0="http://www.esocial.gov.br/schema/lote/eventos/envio/v1_1_1"
xmlns:ns1="http://www.esocial.gov.br/schema/evt/evtTabEstab/v02_03_00"
version="1.0">
<xsl:output method="xml" encoding="UTF-8" />
<!-- identity template -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="ns1:eSocial">
<ns0:evento Id="">
<xsl:copy>
<xsl:apply-templates />
</xsl:copy>
</ns0:evento>
</xsl:template>
</xsl:stylesheet>
如果这就是你想要的......
答案 1 :(得分:0)
您可以匹配ns0:evento
,为其属性和节点应用模板(至少本身,但如果有的话,还会保留子节点)并将相邻的ns1:eSocial
节点复制为{的子节点{1}}。
ns0:evento
也与空模板匹配,以将其压缩到文档树中的原始位置。
ns1:eSocial