XML - XSLT如果两个字段值相同,则清除其中一个字段值



我是xslt的新手,有人能帮我解决这个问题吗?如果两个字段值相同,则清除一个字段值。第一个EMP EE_WORKMOBPH不应该有任何返回值。

<?xml version="1.0" encoding="UTF-8"?>
<root>
<emp>
<EE_WORKMOBPH>123</EE_WORKMOBPH>
<EE_MOBPH>123</EE_MOBPH>
</emp>
<emp>
<EE_WORKPH>345</EE_WORKPH>
<EE_WORKMOBPH>678</EE_WORKMOBPH>
</emp>
</root>

预期结果:'

<?xml version="1.0" encoding="UTF-8"?>
<root>
<emp>
<EE_WORKMOBPH></EE_WORKMOBPH>
<EE_MOBPH>123</EE_MOBPH>
</emp>
<emp>
<EE_WORKPH>345</EE_WORKPH>
<EE_WORKMOBPH>678</EE_WORKMOBPH>
</emp>
</root> 

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="3.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<!-- TODO: Auto-generated template -->
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:strip-space elements="*"/>
<xsl:template match="root/emp/ee_workmobph/text()">
<xsl:if test="ee_workbobph = ee_mobph">
<xsl:text> </xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

AFAICT,你想做:

XSLT 3.0

<xsl:stylesheet version="3.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="EE_WORKMOBPH[.=../EE_MOBPH]/text()"/>        
</xsl:stylesheet>

最新更新