在XSL中选择一个Xpath来显示元素值

时间:2014-07-10 11:22:36

标签: xslt xpath

我有一个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>

有没有人对这种情况有任何其他解决方案?

1 个答案:

答案 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>