我有一个XML,其中包含3个元素。根据XML类型,一次只有一个Xpath存在。
我必须使用XSL将这些元素(无论哪个存在)映射到单个元素。我能够使用Xsl:选择。我对解决方案不满意。我发现它更像是一个黑客。
我的输入XML架构是
<test>
....
<calDays />
<busDays />
<maxBusDays />
</test>
我需要的输出XML架构是
<output>
<days />
</output>
我正在使用的XSL是
<xsl:element name = "days">
<xsl:choose>
<xsl:when test= "calDays">
<xsl:value-of select = "calDays"/></xsl:when>
<xsl:when test= "busDays">
<xsl:value-of select = "busDays"/></xsl:when>
<xsl:otherwise>
<xsl:value-of select = "maxBusDays"/></xsl:otherwise>
</xsl:choose>
</xsl:element>
如果我的输入XML是
<test>
<calDays> 30 </calDays>
</test>
然后我想要我的o / p XML
<output>
<days> 30</days>
</output>
有没有人对这种情况有任何其他解决方案?
答案 0 :(得分:0)
使用
<xsl:template match="test">
<output>
<xsl:apply-templates select="(calDays[normalize-space()] | busDays[normalize-space()] | maxBusDays)[1]"/>
</output>
</xsl:template>
<xsl:template match="calDays | busDays | maxBusDays">
<days><xsl:value-of select="."/></days>
</xsl:template>