2017-03-28 165 views
0

我的XML看起來像XML值:入門基於兩個屬性條件

 <Taxes> 
     <MyTax currency="USD" MyTaxCat="City">0.00000</MyTax> 
     <MyTax currency="USD" MyTaxCat="County">0.01000</MyTax> 
     <MyTax currency="USD" MyTaxCat="District">0.00000</MyTax> 
     <MyTax currency="USD" MyTaxCat="State">0.01000</MyTax> 
     </Taxes> 

我的XSLT:

   <MyTaxes> 
      <xsl:for-each select="Taxes/MyTax"> 
         <Tax> 
         <xsl:attribute name="TaxCategory">VAT</xsl:attribute> 
         <xsl:attribute name="TaxName"> 
         <xsl:value-of select="@MyTaxCat" /> 
         </xsl:attribute> 
         <xsl:attribute name="TaxPerLine"> 
         <xsl:value-of select="/MyTax[@currency='USD']"/> 
         </xsl:attribute> 
         </Tax> 

         </xsl:for-each> 
     </MyTaxes> 

在我的輸出,所有TaxPerLine是越來越設定爲0.0000

 <MyTaxes> 
      <Tax TaxCategory="VAT" TaxName="City" TaxPerLine="0.00000" /> 
      <Tax TaxCategory="VAT" TaxName="County" TaxPerLine="0.00000" /> 
      <Tax TaxCategory="VAT" TaxName="District" TaxPerLine="0.00000" /> 
      <Tax TaxCategory="VAT" TaxName="State" TaxPerLine="0.00000" /> 
     </MyTaxes> 

任何想法我在這裏做錯了什麼?

謝謝!

+0

更改爲和未來,發佈完整的XSLT或至少從「模板匹配=」「> –

+0

謝謝,但我更早地嘗試過,它給了我這個錯誤:錯誤:描述:期望代幣'EOF'發現'['。' 。 - > [< - @ currency ='USD'] –

+2

嘗試''。 –

回答

1

檢查這個代碼,我認爲你的輸出得到

<xsl:decimal-format name="ajeet" decimal-separator="." grouping-separator=","/> 
<xsl:template match="/root"> 
<MyTaxes> 
<xsl:for-each select="Taxes/MyTax"> 
<Tax> 
<xsl:attribute name="TaxCategory">VAT</xsl:attribute> 
<xsl:attribute name="TaxName"> 
<xsl:value-of select="@MyTaxCat" /> 
</xsl:attribute> 
<xsl:attribute name="TaxPerLine"> 
<xsl:value-of select="format-number(current()[@currency='USD'], '0.0000', 'ajeet')"/> 
</xsl:attribute> 
</Tax> 
</xsl:for-each> 
</MyTaxes> 
1

看您已經定義在一開始的路徑MyTax所以無論如何方案會忽略你的請求/MyTax[@currency='USD']"/>的一部分。

要麼你可以定義另一個每個-for循環的一部分,或者你可以只usung current()[@currency='USD'] 此外試試,你不應該用「/」前啓動:/ MyTax因爲你沒有MyTax之前定義的根元素。

這給了我正確的輸出。祝好運。