0
我必须添加元素Main/Years/Year/Notification/@UniqueId="27"
& Main/Years/Year/@IsFailFlag = "Y"
,仅当Main/Years/Year/Month/Extn/@Flag !=''
。 ,我必须复制Main/Years/Year/Month
这种情况。Xsl:属性添加基于子元素的元素属性值
XML
<?xml version="1.0" encoding="UTF-8"?>
<Main>
<Years>
<Year>
<Month ActualDate="" Type="C" FailText="">
<Extn Flag="A" />
<Details>
<Line A="a" B="3" C="1" />
</Details>
</Month>
<Month ActualDate="" Type="C" FailText="">
<Extn Flag="B" />
<Details>
<Line A="a" B="3" C="1" />
</Details>
</Month>
<Month ActualDate="" Type="C" FailText="">
<Extn Flag="" />
<Details>
<Line A="a" B="3" C="1" />
</Details>
</Month>
</Year>
</Years>
</Main>
我的XSL
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="/">
<LoadShipment>
<xsl:for-each select="/Main/Years/Year/Month/Extn">
<xsl:if test="@Flag != ''">
<xsl:attribute name="IsFailFlag">
<xsl:value-of select="'Y'" />
</xsl:attribute>
<Notification>
<xsl:attribute name="UniqueId">
<xsl:value-of select="'27'" />
</xsl:attribute>
</Notification>
<xsl:copy-of select=".." />
</xsl:if>
</xsl:for-each>
</LoadShipment>
</xsl:template>
</xsl:stylesheet>
我收到重复通知其在for循环中,我不能将其移出监守那么它总是会得到填充任何情况下都要
输出
<?xml version="1.0" encoding="UTF-8"?>
<LoadShipment IsFailFlag="Y">
<Notification UniqueId="27" />
<Month ActualDate="" Type="C" FailText="">
<Extn Flag="A" />
<Details>
<Line A="a" B="3" C="1" />
</Details>
</Month>
<Notification UniqueId="27" />
<Month ActualDate="" Type="C" FailText="">
<Extn Flag="B" />
<Details>
<Line A="a" B="3" C="1" />
</Details>
</Month>
</LoadShipment>
预计产量
<?xml version="1.0" encoding="UTF-8"?>
<LoadShipment IsFailFlag="Y">
<Notification UniqueId="27" />
<Month ActualDate="" Type="C" FailText="">
<Extn Flag="A" />
<Details>
<Line A="a" B="3" C="1" />
</Details>
</Month>
<Month ActualDate="" Type="C" FailText="">
<Extn Flag="B" />
<Details>
<Line A="a" B="3" C="1" />
</Details>
</Month>
</LoadShipment>
我将与您的第一个解决方案。它更容易理解。您也可以提供网址w这里可以学习xslt。我知道基本的东西 – 2FaceMan