我的Heml中的HeightFeet元素未显示

时间:2014-12-17 17:11:41

标签: xml xslt

根据我的xml代码,我想将HeightFeet数转换为英寸。 我还想检查HeightFeet是否不小于48英寸且不大于95英寸。 我该怎么做?

所需的输出

<ext:Respondent>
    <nc:PersonSexCode>F </nc:PersonSexCode>
    <nc:PersonHeightMeasure>
        <nc:MeasureText>60</nc:MeasureText>
        <nc:MeasureUnitText>inches</nc:MeasureUnitText>
        <nc:LengthUnitCode>INH</nc:LengthUnitCode>
    </nc:PersonHeightMeasure>
        <nc:PersonWeightMeasure>
        <nc:MeasureText>130</nc:MeasureText>
        <nc:MeasureUnitText>pounds</nc:MeasureUnitText>
        <nc:WeightUnitCode>LBR</nc:WeightUnitCode>
    </nc:PersonWeightMeasure>
</ext:Respondent>

没有高度的当前输出

<nc:PersonHeightMeasure>
<nc:MeasureText>NaN</nc:MeasureText>
<nc:MeasureUnitText>inches</nc:MeasureUnitText>
<nc:LengthUnitCode>INH</nc:LengthUnitCode>

xml代码

<Party ID="1116666" InternalPartyID="1610656384">
    <Gender Word="F">Female</Gender>
    <HeightFeet>5</HeightFeet>
    <WeightPounds>130</WeightPounds>
    <EyeColor Word="BLU">Blue</EyeColor>
</Party>

我编辑的简化xslt代码

    <nc:PersonHeightMeasure>
   <nc:MeasureText>
      <xsl:choose>
         <xsl:when test="HeightFeet"> 
       <xsl:value-of select="(HeightFeet*12) + HeightInches "/>
    </xsl:when>
      </xsl:choose>
   </nc:MeasureText>
   <nc:MeasureUnitText>
      <xsl:text>inches</xsl:text>
   </nc:MeasureUnitText>
   <nc:LengthUnitCode>
   <xsl:text>INH</xsl:text>
   </nc:LengthUnitCode>
</nc:PersonHeightMeasure>

1 个答案:

答案 0 :(得分:2)

它未输出的原因是您尝试添加HeightInches,但输入中没有HeightInches

看看你之前的问题,我注意到你使用的XSLT版本是3.0。如果您真的使用的是3.0(或2.0)处理器,请尝试将xsl:if更改为:

<xsl:variable name="inches" select="if (HeightInches castable as xs:double) then HeightFeet * 12 + HeightInches else HeightFeet * 12"/>
<xsl:if test="($inches > 48) and (95 > $inches)">
    <PersonHeightMeasure>
        <MeasureText>
            <xsl:value-of select="$inches"/>
        </MeasureText>
        <MeasureUnitText>
            <xsl:text>inches</xsl:text>
        </MeasureUnitText>
        <LengthUnitCode>
            <xsl:text>INH</xsl:text>
        </LengthUnitCode>
    </PersonHeightMeasure>
</xsl:if>  

注意:您可能必须在样式表中声明命名空间xmlns:xs="http://www.w3.org/2001/XMLSchema"才能使用此答案。