2017-03-28 13 views
0

Meine Xml wie folgt aussieht:Erste XML-Wert auf zwei Attributbedingungen basiert

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

Mein 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> 

In meiner Ausgabe, alle TaxPerLine wird immer als 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> 
gesetzt

Irgendeine Idee, was mache ich hier falsch?

Danke !!

+0

Ändern Sie in und in Zukunft, post die komplette XSLT oder mindestens von "Vorlage match =" ">. –

+0

Danke, aber ich habe dies früher versucht und es gab mir diesen Fehler: FEHLER: Beschreibung: Erwartete Token 'EOF' gefunden '['. .- -> [<- @ currency = 'USD'] –

+2

Versuchen Sie '' stattdessen. –

Antwort

1

Überprüfen Sie diesen Code I Ausgabe

<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

erhalten denken schauen die Rolle /MyTax[@currency='USD']"/> Sie haben bereits den Weg definiert MyTax am Anfang so ohnehin das Programm wird Ihre Anfrage ignorieren.

Entweder können Sie definieren eine andere each-for-Schleife für den Teil oder Sie nur usung current()[@currency='USD'] Neben versuchen können, sollten Sie nicht mit „/“ Ex beginnen:/MyTax weil Sie habe keine Root-Element vor MyTax definiert.

Das gab mir die richtige Ausgabe.Glück.

Verwandte Themen