我認爲你正在尋找一個基本的條件處理使用xsl:choose
。下面的XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="person">
<person>
<InIdNum>
<xsl:choose>
<xsl:when test="idNumberType='10'">
<xsl:value-of select="panNumber"/>
</xsl:when>
<xsl:when test="idNumberType='4'">
<xsl:value-of select="passportNumber"/>
</xsl:when>
<xsl:otherwise>
<xsl:text>???</xsl:text>
</xsl:otherwise>
</xsl:choose>
</InIdNum>
</person>
</xsl:template>
</xsl:stylesheet>
當這個輸出應用到該輸入XML
<xml>
<person>
<idNumberType>10</idNumberType>
<panNumber>Pan1234</panNumber>
<passportNumber>Pass1234</passportNumber>
</person>
<person>
<idNumberType>4</idNumberType>
<panNumber>Pan9876</panNumber>
<passportNumber>Pass9876</passportNumber>
</person>
<person>
<idNumberType>53</idNumberType>
<panNumber>Pan53</panNumber>
<passportNumber>Pass53</passportNumber>
</person>
</xml>
結果:
<?xml version="1.0" encoding="utf-8"?>
<xml>
<person><InIdNum>Pan1234</InIdNum></person>
<person><InIdNum>Pass9876</InIdNum></person>
<person><InIdNum>???</InIdNum></person>
</xml>
更換身份模板與任何你需要的其餘部分做該文件。