我正在努力解决一些基本的XSLT问题。我想从某些XML中删除一个元素,具体取决于它是否没有某个属性(在本例中为PriorValue)。
XML看起来像这样 XML不仅限于以下部分,它还有很多其他部分,同样的逻辑也适用于它们。
<Emp>
<Personal>
<First_Name>abc</First_Name>
<Last_Name>xyz</Last_Name>
<Gender>1</Gender>
<Birth_Date PriorValue="1980-08-05">1980-09-05</Birth_Date>
<Country_of_Birth PriorValue="600">724</Country_of_Birth>
<Marital_Status PriorValue="0">1</Marital_Status>
</Personal>
<Info>
<Name>abc</Name>
<ID>Part time</ID>
<NoOfProbationDays>0</NoOfProbationDays>
<EMPtype>0</EMPtype>
<CountryOfBirth PriorValue="IND">ESP</CountryOfBirth>
</Info>
</Emp>
所需的XML输出如下所示。
<Emp>
<Personal>
<Birth_Date PriorValue="1980-08-05">1980-09-05</Birth_Date>
<Country_of_Birth PriorValue="600">724</Country_of_Birth>
<Marital_Status PriorValue="0">1</Marital_Status>
</Personal>
<Info>
<CountryOfBirth PriorValue="IND">ESP</CountryOfBirth>
</Info>
</Emp>
感谢您的帮助。
答案 0 :(得分:2)
使用
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
<xsl:template>
<xsl:template match="*[not(*) and not(@PriorValue)]"/>