我正在尝试使用XSLT转换来更改此XML,但似乎我无法管理它。我想要更改的XML是:
<GOOITEGDS>
<GroMasGDS46>0.046</GroMasGDS46>
<NetMasGDS48>0.01</NetMasGDS48>
<ProReqGDI1>10</ProReqGDI1>
<PreProGDI1>00</PreProGDI1>
<ComNatProGIM1>000</ComNatProGIM1>
<StaValAmoGDI1>12.28</StaValAmoGDI1>
<PreDocTypAR21>380</PreDocTypAR21>
<PreDocRefAR26>3672</PreDocRefAR26>
<PreDocCatPREADMREF21>Z</PreDocCatPREADMREF21>
<DocTypDC21>N380</DocTypDC21>
<DocRefDC23>2712</DocRefDC23>
<DocTypDC21>Y900</DocTypDC21>
<DocRefDC23>-</DocRefDC23>
<DocTypDC21>Y922</DocTypDC21>
<DocRefDC23>-</DocRefDC23>
<ComNomCMD1>71171900</ComNomCMD1>
<TARCodCMD1>00</TARCodCMD1>
<TARFirAddCodCMD1>0000</TARFirAddCodCMD1>
<TARSecAddCodCMD1>0000</TARSecAddCodCMD1>
<NAtAddCodCMD1>0000</NAtAddCodCMD1>
</GOOITEGDS>
并且我希望XSLT能够将以下结果包含在另一个节点中的3个特定元素
<GOOITEGDS>
<GroMasGDS46>0.046</GroMasGDS46>
<NetMasGDS48>0.01</NetMasGDS48>
<ProReqGDI1>10</ProReqGDI1>
<PreProGDI1>00</PreProGDI1>
<ComNatProGIM1>000</ComNatProGIM1>
<StaValAmoGDI1>12.28</StaValAmoGDI1>
<PREADMREFAR2>
<PreDocTypAR21>380</PreDocTypAR21>
<PreDocRefAR26>3672</PreDocRefAR26>
<PreDocCatPREADMREF21>Z</PreDocCatPREADMREF21>
</PREADMREFAR2>
<DocTypDC21>N380</DocTypDC21>
<DocRefDC23>2712</DocRefDC23>
<DocTypDC21>Y900</DocTypDC21>
<DocRefDC23>-</DocRefDC23>
<DocTypDC21>Y922</DocTypDC21>
<DocRefDC23>-</DocRefDC23>
<ComNomCMD1>71171900</ComNomCMD1>
<TARCodCMD1>00</TARCodCMD1>
<TARFirAddCodCMD1>0000</TARFirAddCodCMD1>
<TARSecAddCodCMD1>0000</TARSecAddCodCMD1>
<NAtAddCodCMD1>0000</NAtAddCodCMD1>
</GOOITEGDS>
我尝试了以下内容,但它分别包装了三个元素。
<xsl:template match="PreDocTypAR21|PreDocRefAR26|PreDocCatPREADMREF21">
<PREADMREFAR2>
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</PREADMREFAR2>
</xsl:template>
非常感谢,Nikos
答案 0 :(得分:0)
如果节点的顺序已知并且不变,则可以使用:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/GOOITEGDS">
<xsl:copy>
<xsl:copy-of select="PreDocTypAR21/preceding-sibling::*"/>
<PREADMREFAR2>
<xsl:copy-of select="PreDocTypAR21 | PreDocRefAR26 | PreDocCatPREADMREF21"/>
</PREADMREFAR2>
<xsl:copy-of select="PreDocCatPREADMREF21/following-sibling::*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>