Andi: Berechnungen in XSL

Beitrag lesen

Hallo,
habe noch nicht viel Erfahrung mit xsl-xml und muss mich mit folgendem Problem beschäftigen:

Eine vorhandene xml-Datei und eine vorhandene xsl-Datei (Auszüge daraus siehe unten) müssen so angepasst werden, dass ich mit den Daten aus der xml-Datei in der xsl-Datei Berechnungen anstellen kann. Habe schon viel Zeit investiert, komme aber nicht weiter. In welche Richtung zeigt der richtige Weg?

Beispiel: Ich muss den Wert der "Kabellaenge" mit dem Wert "UGW" aus ML=1 multiplizieren und das Ergebnis anzeigen lassen...

Kann mir da jemand weiterhelfen bitte?
(mal abgesehen davon, dass ich das Komma der Zahlen in der XML-Datei noch in Punkte wandeln muss)

Danke!
Andi

Auszug aus XML-Datei:
<Daten>
 <Global>

...

<Kabelquerschnitt>5</Kabelquerschnitt>
  <Kabellaenge>6</Kabellaenge>
  <Akzeptanzgrenze>7</Akzeptanzgrenze>

...

</Global>

<Prozessmerkmale>

...

<Prozessmerkmal>
   <Nr>13</Nr>
   <ML>1</ML>
   <EA>S</EA>
   <Merkmal>SpannungsabfallUd1</Merkmal>
   <UGW>0,6</UGW>
   <UAW>0,7</UAW>
   <SW>0,8</SW>
   <OAW>0,9</OAW>
   <OGW>0,10</OGW>
   <ME>V</ME>
   <Kommentar>Automatischer Ablauf</Kommentar>
   <ParamNetzteilInduktiv>NI_NI002251</ParamNetzteilInduktiv>
   <ParamSchaltabstand>SA_nv_SA001678</ParamSchaltabstand>
   <ParamAnschluss>A_test_rg</ParamAnschluss>
   <ParamZusatzpruefung>ZP_ZP_C0001_HV001</ParamZusatzpruefung>
  </Prozessmerkmal>

...

</Prozessmerkmale>

...

<Stellparameter>
  <ParamNetzteilInduktiv>
   <NI_NI002251>
    <Netzteil>E229</Netzteil>
    <BetriebsspannungUb>20</BetriebsspannungUb>
    <Stromart>DC</Stromart>
    <LaststromIL>2</LaststromIL>
    <Betriebsart>S</Betriebsart>
    <EPPEinAusErkennung>U</EPPEinAusErkennung>
    <Lastfusspunkt>-</Lastfusspunkt>
    <UdTypisch>3,3</UdTypisch>
    <Ausgang>0</Ausgang>
    <BereitschaftszeitTv>150</BereitschaftszeitTv>
    <Schaltschwelle>10</Schaltschwelle>
    <EPMEinAusErkennung> </EPMEinAusErkennung>
    <EPSchwelle>10</EPSchwelle>
    <EPZulaessig>1000</EPZulaessig>
   </NI_NI002251>

...

</ParamNetzteilInduktiv>

...

</Stellparameter>
</Daten>

Auszug aus XSL-Datei:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:preserve-space elements="*"/>
<xsl:strip-space elements="ParamNetzteilInduktiv"/>
<xsl:template match="/">

...

<TD id="R003">
<xsl:for-each select="Daten/Global">
<xsl:value-of select="Kabellaenge"/>
</xsl:for-each>
</TD>

...

<TD width="6%" id="R007">
<xsl:for-each select="Daten/Prozessmerkmale/Prozessmerkmal">
<xsl:if test="(Merkmal)='SpannungsabfallUd1'">
<xsl:if test="ML=1">
<xsl:value-of select="UGW"/>
</xsl:if>
</xsl:if>
</xsl:for-each>
</TD>

...

<TD width="6%" id="R007">
<xsl:for-each select="Daten/Prozessmerkmale/Prozessmerkmal">
<xsl:if test="(Merkmal)='SpannungsabfallUd1'">
<xsl:if test="ML=2">
<xsl:value-of select="UGW"/>
</xsl:if>
</xsl:if>
</xsl:for-each>
</TD>

...

</xsl:template>
</xsl:stylesheet>