根据我的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>
答案 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"
才能使用此答案。