Just nu i M3-nätverket
Gå till innehåll

hur skapa fler when villkor i xsl?


embla

Rekommendera Poster

Hej!

Jobbar med xls - vilket jag inte kan speciellt bra. Skulle behöva ha hjälp med hur jag skriver ett villkor med flera when villkor.

Så här har jag skrivit: (tog bort "<>" så att inget på sidan skulle protestera mot xsl-kod..)

xsl:choose
xsl:when test="FTG = '205'"
xsl:when test="MOTP = '490'"
xsl:value-of select="Fakturanr"/
/xsl:when  
/xsl:when
/xsl:choose
 
Det går inte... 
syftet med mitt villkor är
Om FTG =205 och MTP=490 skriv xxx
OM FTG=210 och MTP = 490 skriv xx
OM FTG är annat än 205,220,240 och REG är ifyllt skriv REG
 
Hur skriver jag då?
(Osäker på om detta är rätt forum... hoppas på hjälp!)
Länk till kommentar
Dela på andra webbplatser

osäker på vad du frågar om. knappast Excel väl?

xsl påminner mig snarare om någon form av XML...

Det kan vara mitt fel, jag flyttade tråden till Excel från Program-övriga eftersom en snabb googling tydde på att xsl hade med Excel att göra.
Länk till kommentar
Dela på andra webbplatser

Hej igen, nej det är inte i excel utan ska vara med i en xslt-fil. Använder ett verktyg för att skapa fakturalayouter och kan via xsl-kod sätta villkor för att få ut vissa rutor med texter (antingen ledtexter o/e fakturatermer/fält). men är inte så haj på xsl som jag skulle behöva. 

 

infilen innehåller en massa fakturor som ska ha olika fält utskrivna på fakturan baserat på olika villkor (skrivna i xsl).

Regnummer ligger i en ruta med ledtext + termen Regnummer.

Om fakturan har kod FTG=205 och MTP inte är 490 ska Regnummer skrivas ut.
Men för övriga MTP-villkor ska Regnummer skrivas ut bara om det är ifyllt.

 

xsl:choose
xsl:when test="FTG = '205' and MTP_kod != '490'"
xsl:value-of select="Regnummer"/
 
Det finns ett antal FTG-värden som ska ha samma typ av villkor, så jag kan upprepa raderna ovan.
Men jag behöver komplettera för att känna av om Regnummer finns med - för annars vill jag ju inte ha ledtexten som kommer i samma fält med på fakturan.
Sedan finns vissa FTG-värden som inte ska ha villkoret MTP_kod != '490.
 
Som exempel:
infilen har ett antal fakturor:
Fakt 1: FTG=205 + MTP 300 och Momsreg är ifyllt => rutan ska ut.
Fakt 2: FTG=205 + MTP 490 och Momsreg är blankt => rutan ska inte ut.
Fakt 3: FTG=300 + MTP 300 och Momsreg är blankt => rutan ska inte ut.
Fakt 4. FTG=100 + MTP 490 och Momsreg är ifyllt => rutan ska ut
 
Finns det någon som dels fattar vad jag menar och dels har möjlighet att hjälpa mig vore jag tacksam! 
Länk till kommentar
Dela på andra webbplatser

XSL är ett dokumentformat som du kan spara data i, en stilmall.

 

Vad för program är det som tolkar din fil? Jag är inte helt insatt i det hela men känns som att det är implementationsberoende. Eller finns det ett gäng definierade nycklar du kan använda?

 

 

(och vart ska jag flytta denna tråd... webbutveckling, övrigt?)

Länk till kommentar
Dela på andra webbplatser

  • 2 months later...

Hej igen! Lyckades inte lösa det med if-sats... men har nu ett nytt snarligt fall som jag behöver selektera i.

Filen som jag testar mot kan ha koden AG ifyllt med just AG eller vara blankt. Den kan också ha koden B ifylld med olika värden - eller vara blankt.

 

Med blankt fält står taggen skriven så här:

<AG_kod/> resp <B_kod/>

 

Om det är blankt i båda fallen ska en text skrivas ut som finns i <XINFO> som jag brukar hämta med <xsl:value-of select="XINFO"/>

Om det finns antingen något i AG eller något i B ska inte texten skrivas ut. 

Hur gör jag ett sådant villkor?

Länk till kommentar
Dela på andra webbplatser

Har testat på följande

<xsl:choose>
  <xsl:when test="AGF_kod != 'AG'" or test="B_kod != 'SEB'">
    <xsl:value-of select="XINFO"/>
  </xsl:when>
</xsl:choose>
 

och får meddelandet

 
"XML parser: Attribute name "or" associated with an element type "xsl:when" must be followed by the ' = ' character."
 
...Sedan måste jag ju komma runt att jag ska kolla om B-koden egentligen är blank men testar så här för att få villkoret lite enklare... HUUUUR gör jag för att kombinera??
Länk till kommentar
Dela på andra webbplatser

<xsl:choose>

  <xsl:when test="AGF_kod != 'AG' or B_kod != 'SEB'">

    <xsl:value-of select="XINFO"/>

  </xsl:when>

</xsl:choose>

Borde fungera.

 

På sidan jag länkade till ovan kan du enkelt pröva dina koder.

Länk till kommentar
Dela på andra webbplatser

Tack!!! ÄNTLIGEN kommer jag vidare!!! och så var det så "himla enkelt"! jag försökte krångla till det när jag skrev... Väldigt glad för hjälpen! :-)

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...