Announcement

Collapse
No announcement yet.

Zwei Variablen dividieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zwei Variablen dividieren

    Hallo Zusammen!

    Ich habe folgendes Problem:
    Ich würde gerne 2 Variablen dividieren und diesen Wert dann ausgeben.
    Hier mein Ansatz:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet
      version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
      xmlns:o="urn:schemas-microsoft-com:office:office"  
     xmlns:x="urn:schemas-microsoft-com:office:excel"  
     xmlns:html="http://www.w3.org/TR/REC-html40"  
     xmlns:aid="http://ns.adobe.com/AdobeInDesign/4.0/">
    
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
      <xsl:strip-space elements="*" />
        
      <xsl:template match="/">
      <Root>
          <xsl:variable name="Gesamtstueck" select="substring(//ss:Cell[ss:NamedCell/@ss:Name = 'DATA66']/ss:Data, 1,2)"/>
          
          <xsl:variable name="Stueckzahl" select="substring(//ss:Cell[ss:NamedCell/@ss:Name = 'DATA63']/ss:Data, 1, 2)"/>
          
          <xsl:variable name="Kartons" select="$Gesamtstueck div $Stueckzahl"/>
            
          <Textabschnitt>
          
          <Kartons><xsl:value-of select="$Kartons"/></Kartons>
          <Stueckzahl><xsl:value-of select="$Stueckzahl"/></Stueckzahl>
          <Gesamtstueck><xsl:value-of select="$Gesamtstueck"/></Gesamtstueck>
          
          </Textabschnitt>  
         
    </Root>
          
    </xsl:template>
    
    </xsl:stylesheet>
    Leider gibt mir mein Editor folgende Fehlermeldung aus:
    Arithmetic operator is not defined for arguments of types (xs:string, xs:string)

    Anscheinend ist es nicht möglich zwei Variablen in XLST zu dividieren?
    Ersetzt ich die beiden Variablen in der Formel durch Zahlen funktioniert das Ganze einwandfrei.

    Vielleicht weiß jemand von euch Rat, bin für jeden Anstz dankbar!

    Beste Grüße,

    Bernd

  • #2
    Originally posted by bernd.richter View Post
    Vielleicht weiß jemand von euch Rat, bin für jeden Anstz dankbar!
    Hi,

    ich kenne mich mit XSLT zwar nicht aus, aber anhand der Fehlermeldungen, kann ich dir auf jeden Fall einen Ansatz geben.

    Originally posted by bernd.richter View Post
    Anscheinend ist es nicht möglich zwei Variablen in XLST zu dividieren?
    So steht das aber nicht in der Fehlermeldung!

    Originally posted by bernd.richter View Post
    Leider gibt mir mein Editor folgende Fehlermeldung aus:
    Arithmetic operator is not defined for arguments of types (xs:string, xs:string)
    Die Fehlermeldung bedeutet für mich einfach, dass man Zeichenketten nicht teilen kann.


    Originally posted by bernd.richter View Post
    Ersetzt ich die beiden Variablen in der Formel durch Zahlen funktioniert das Ganze einwandfrei.
    Gut, dann wirst du die Zeichenketten wohl in Zahlen konvertieren müssen.
    "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland)

    Viele Grüße Novi

    Comment


    • #3
      Danke Novi!

      Du hast natürlich recht, du hast meinen Post gut auseinander genommen

      Leider weiß ich nicht wie ich Variablen in Zahlen umwandeln kann, anscheinend geht das mit xsl:number, bin aber bisher noch nicht draufgekommen...

      Comment


      • #4
        alle xpath befehle


        selfhtml xpath


        http://www.zvon.org/index.php?nav_id=tutorials

        Comment


        • #5
          Originally posted by bernd.richter View Post
          Du hast natürlich recht, du hast meinen Post gut auseinander genommen
          Das stimmt, da hatte ich gerade Lust zu


          Originally posted by bernd.richter View Post
          Leider weiß ich nicht wie ich Variablen in Zahlen umwandeln kann, anscheinend geht das mit xsl:number, bin aber bisher noch nicht draufgekommen...
          Musst du number nicht einfach als Funktion verwenden und jeweils die Variablen übergeben?

          Code:
          number(variable1)/number(variable2)
          Aber wie gesagt, ich kenne mich mit XSLT nicht aus. Wenn es nicht klappt, kann die wahrscheinlich jemand anderes aus diesem Forum helfen.
          "(...) deshalb mag ich Binärtechnik. Da gibt es nur drei Zustände: High, Low und Kaputt." (Wau Holland)

          Viele Grüße Novi

          Comment


          • #6
            Danke ihr beiden!

            Es ist wirklich so einfach...

            Code:
            <xsl:variable name="Kartons" select="number($Gesamtstueck) div number($Stueckzahl)"/>

            Comment


            • #7
              Welchen XSLT-Prozessor benutzt du eigentlich? Mit einem XSLT 1.0 Prozessor sollte das Problem nicht auftreten. Und als ich bei einem anderen Post XSLT 2.0 (with xpath-default-namespace) benutzt habe, hast du gesagt, das wird bei dir nicht unterstützt. Daher bin ich neugierig, was genau du benutzt, dass so was wie xpath-default-namespace bei dir nicht funktioniert, aber der Prozessor Fehlermeldungen über "xs:string" ausgibt, was eigentlich nur XSLT 2.0 Prozessoren machen.

              Comment


              • #8
                Ist ein bißchen komplizierter...
                Aufm Mac arbeite ich mit einem Programm namens editix, unter Windows mit Altova XML Spy.
                Diese ganzen XSLT/XML Sachen sollen in Kombination mit einem JavaScript einen Arbeitsablauf automatisieren und ein automatisches Layout in Adobe InDesign CS4 erzeugen. Dieses Programm bietet vielfache Schnittstellen wie Dokumentenzusammenführung, integrierte Scripte (JavaScript, VBA, AppleScript), und eben auch den XML-Import mit XSLT transformation.
                Indesign untertstützt jedoch nicht x-path-default-namespaces.
                Den ganzen Workflow (d.h. die Transformation) teste ich vorher in den beiden Editoren, da es so einfacher, schneller und leichter zu debuggen ist.
                Die Fehlermeldung "xs:string" gabs heute bei editix, Altova hat etwas ähnliches gemeldet.

                Comment


                • #9
                  Interessant, von "editix" hatte ich noch nie gehört. Wenn du bei Gelegenheit mal das Stylesheet unter http://www.mulberrytech.com/xsl/xsl-...or-version.xsl mit editix ausprobieren kannst und die Ausgabe hier posten kannst, bin ich dir dankbar. Mich interessiert, welchen XSLT-Prozessor editix benutzt.

                  Comment


                  • #10
                    Klar gerne:

                    Code:
                    <?xml version="1.0" encoding="utf-8"?>
                    <html xmlns="http://www.w3.org/1999/xhtml">
                    	<head>
                    		<title>XSLT Processor Version</title>
                    	</head>
                    	<body>
                    		<p>XSL version: 1</p>
                    		<p>Vendor: SAXON 6.5.5 from Michael Kay</p>
                    		<p>Vendor URL: http://saxon.sf.net/</p>
                    	</body>
                    </html>

                    Comment

                    Working...
                    X