我正在尝试在J Developer中映射两个XSD来生成转换(XSLT)。
我的问题
在我的source XSD
我想检查一个condition
让我们说idNumberType =10
然后我必须map PAN Number(in source XSD) to InIdNum(In Target XSD)
。如果idNumberType =4
那么我必须map Passport number(in source XSD) to InIdNum(In Target XSD)
等
任何建议/意见/修改都将受到欢迎。
提前致谢。
答案 0 :(得分:0)
我认为您正在寻找使用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>
将身份模板替换为您需要对文档的其余部分执行的操作。