2014-12-18 52 views
-2

我編輯了我的xml代碼以包含<HeightInches>5</HeightInches>。我想將HeightFeet數字轉換爲英寸。 我也想檢查HeightInches不小於48英寸,不大於95英寸。 我該怎麼做? 我的XML代碼我的元素不顯示期望值英尺轉換爲英寸

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

基於此XML代碼,所需的輸出應該是這樣的:

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

輸出我的XSLT是生產這個樣子的

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

我的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

您使用XSLT哪個版本的?請使用完整的XSLT編輯您的文章。 – 2014-12-19 00:12:01

回答

0

您的上下文節點是不知道根據你展示XSLT。所以這可能是你的代碼不起作用的一些原因。它的可能性是不正確的。儘管如此,它總是善於施展(更容易做好準備)。我相信一些xslt 2.0處理器需要這個。

<xsl:value-of select="(number(HeightFeet)*12) + number(HeightInches) "/> 

編輯

此外,您的輸入XML不具備的元素HeightInches,這將給你一個NaN,當您嘗試將多個不存在的值。

+0

你能重現這個問題嗎? – 2014-12-19 03:03:52

+0

是的 - 請參閱我的編輯,它反映了複製。 – PhillyNJ 2014-12-19 11:57:14

+0

那麼,如果沒有HeightInches值,那麼將其轉換爲數字將無濟於事。 OTOH如果值存在,那麼將其轉換爲數字將無法實現任何內容。 – 2014-12-19 12:30:48

0

這就是我在xslt中所做的,它現在正在生成將H​​eightFeet轉換爲HeightInches並檢查HeightInches是否小於45英寸或等於或大於95英寸的所需輸出。

<xsl:variable name="vHeightInches"> 
    <xsl:choose> 
     <xsl:when test="HeightInches"> 
      <xsl:value-of select="HeightInches"/> 
     </xsl:when> 
     <xsl:otherwise>0</xsl:otherwise> 
    </xsl:choose> 
</xsl:variable> 
    <xsl:variable name="vHeightFeet"> 
     <xsl:choose> 
      <xsl:when test="HeightFeet"> 
       <xsl:value-of select="HeightFeet"/> 
      </xsl:when> 
     <xsl:otherwise>0</xsl:otherwise> 
     </xsl:choose> 
    </xsl:variable> 
      <xsl:if test="(($vHeightFeet*12) + $vHeightInches &gt; 48) and (($vHeightFeet*12) + $vHeightInches &lt; 95)"> 
    <nc:PersonHeightMeasure> 
     <nc:MeasureText> 
      <xsl:value-of select="($vHeightFeet*12) + $vHeightInches"/> 
     </nc:MeasureText> 
     <nc:MeasureUnitText> 
      <xsl:text>inches</xsl:text> 
     </nc:MeasureUnitText> 
     <nc:LengthUnitCode> 
      <xsl:text>INH</xsl:text> 
     </nc:LengthUnitCode> 
    </nc:PersonHeightMeasure> 
</xsl:if> 

`

相關問題