下面是我的xml
<ServiceIncident xmlns="http://b2b.ibm.com/schema/IS_B2B_CDM/R2_2">
<Asset>
<Asset_Tag>900</Asset_Tag>
</Asset>
<ConfigItem>
<CINum>1024</CINum>
</ConfigItem>
以下是条件
if Asset_Tag < 1000, do not map the Asset element at all, but do map ConfigItem
if Asset_Tag > 1000, do not map the ConfigItem at all,but do map Asset_Tag
对于上述两个条件,我编写了以下xsl代码
<xsl:template match="r2:Asset/r2:Asset_Tag">
<xsl:copy>
<xsl:choose>
<xsl:when test="r2:Asset_Tag < 1000">
<xsl:value-of select="r2:ConfigItem/r2:CINum" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="r2:Asset/r2:Asset_Tag" />
</xsl:otherwise>
</xsl:choose>
</xsl:copy>
</xsl:template>
请帮我解决这个问题
答案 0 :(得分:0)
您位于匹配Asset_Tag
元素的模板中,但您的xpath表达式被编写为上下文节点为ServiceIncident
。尝试更像这样的东西:
<xsl:when test=". < 1000">
<xsl:value-of select="../../r2:ConfigItem/r2:CINum" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="." />
</xsl:otherwise>
但将逻辑划分为其他模板或更改现有模板以匹配ServiceIncident
可能更有意义,如果没有看到更多样式表,就无法说出来。