Manuela: Die ID in einem Tag mit auslesen?

Hi,

ich hab mal wieder ne Frage (ich fürchte ist wieder eine Anfängerfrage, aber das bin ich ja auch)

Ich habe nur so ziemlich alle Probleme mit meinen versaubeuteleten XML-Dateien gelöst (die kriege ich ja geliefert und an dem Format gibt es nichts zu rütteln, der Hersteller der Software ist taub auf dem Ohr)

NUn braucht der Kunde noch eine bestimmte INformation aus dem XML.
Mein XML ist wie folg aufgebaut (allerdings deutlich mehr pro Produkt)

<produkt id="5711" produkt-number="0815">
 <prnr>12345</prnr>
 <prname>Egon</prname>
</produkt >
<produkt id="5712" produkt-number="0816">
 <prnr>56789</prnr>
 <prname>Hugo</prname>
</produkt >

Was ich nun brauch ist der Wert hinter "produkt-number", da das die Nummer des Produkts ist für den Shop, in den die Daten reinlaufen.

Komm ich da irgendwie ran?

Danke schon mal

Manu

  1. Hello,

    Komm ich da irgendwie ran?

    ja - klar! Sofern du jetzt noch verrätst, wie du an den Rest drangehst, findet sich sicherlich auch dafür eine Lösung. Das ist übrigens ein Attributknoten, falls dir das bei deiner eigenen Suche weiterhilft...

    MfG
    Rouven

    --
    -------------------
    sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& (SelfCode)
    Inter Arma Enim Silent Leges  --  Cicero
    1. Komm ich da irgendwie ran?
      ... wie du an den Rest drangehst,...

      Ja das ist die Frage - öffnest du das XML mit einem Java Programm, oder brauchst du dazu ein XSL?

      Mit XPath (welches in XSL verwendet wird) gelangst du zum Attribut mittels:

      //produkt/@produkt-number

      Aber da musst du schon genauer spezifizieren wie du auslesen willst.

  2. HI,

    äh sorry, ich gehe da mit XSL ran.

    Ja XSL und Attributknoten sagt mir was. Damit wandle ich die Datei ja :

    xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" encoding="UTF-8"/>

    <xsl:template match="prnr">~Nr~<xsl:value-of select="."~</xsl:template>
    <xsl:template match="prname">~Name~<xsl:value-of select=".">~</xsl:template>

    </xsl:stylesheet>

    Nun brauch ich halt noch was für den Attributknoten.

    Sorry wie gesagt, bin Anfänger in XSL

    Danke Manu

    1. Hallo Manuela,

      <xsl:template match="prnr">~Nr~<xsl:value-of select="."~</xsl:template>
      <xsl:template match="prname">~Name~<xsl:value-of select=".">~</xsl:template>

      </xsl:stylesheet>

      Nun brauch ich halt noch was für den Attributknoten.

      Attribute werden entweder über die attribute-Achse oder kurz mittels @attribute angesprochen. Wie soll denn die konkrete Ausgabe aussehen?

      Grüße,
      Thomas

      1. Hallo Thomas,

        das XML sieht ja so aus: (also deutlich komplexer, aber für das Beispiel reicht es)

        <produkt id="5711" produkt-number="0815">
         <prnr>12345</prnr>
         <prname>Egon</prname>
        </produkt >
        <produkt id="5712" produkt-number="0816">
         <prnr>56789</prnr>
         <prname>Hugo</prname>
        </produkt >

        Am Ende brauch ich folgendes:

        ~mainnr~0815prnr~12345prname~Egon~
        ~mainnr~0816prnr~56789prname~Hugo~

        Das ganze muss ich dannn noch einmal mit einem Scriptprogramm überarbeiten, da aus den Daten noch andere Infos gezogen werden, die mit anderen Datien verknüpft werden.

        Das ist alles fertig, ich scheitere jetzt an dieser blöden Hauptnummer :-(

        danke Dir schon mal

        Manu

        1. Hallo Manuela,

          Am Ende brauch ich folgendes:

          ~mainnr~0815prnr~12345prname~Egon~
          ~mainnr~0816prnr~56789prname~Hugo~

          Unter Annahme eines Wurzelelements produkte kann das so aussehen (Ausgabe mit method="text"):

          <xsl:template match="produkte">  
            <xsl:apply-templates select="produkt"/>  
          </xsl:template>  
            
          <xsl:template match="produkt">  
            <xsl:text>~mainnr~</xsl:text><xsl:value-of select="@produkt-number"/><xsl:text>~~prnr~</xsl:text><xsl:value-of select="prnr"/><xsl:text>~~prname~</xsl:text><xsl:value-of select="prname"/><xsl:text>~</xsl:text><xsl:text>&#xA;</xsl:text>  
          </xsl:template>
          

          Evtl. muss noch der systemspezifische Zeilenumbruch (hier \n = &#xA;) angepasst werden.

          Grüße,
          Thomas

          1. Hallo Thomas,

            dsa klappt jetzt, ich kriege nun diese Angaben sauber aus dem XML raus. Nur klappt jetzt leider mein choose nicht mehr :-(

            Wie gesagt, XSL hab ich mir erst angeeignet und da bin ich noch nicht so wirklich fit.

            In meinen Daten sind auch noch solche Sachen drin mit Mehrfachauswahl.

            Die klappen jetzt nicht mehr :-(

            <produkt id="5711" produkt-number="0815">
             <prnr>12345</prnr>
             <prname>Egon</prname>
             <prprice country="de">7.75</price>
             <prprice country="at">8.06</price>
            </produkt >
            <produkt id="5712" produkt-number="0816">
             <prnr>56789</prnr>
             <prname>Hugo</prname>
             <prprice country="de">7.75</price>
             <prprice country="at">8.06</price>
            </produkt >

            Hier mein XML dazu

            xsl:stylesheet version="2.0"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
            <xsl:output method="text" encoding="UTF-8"/>

            <xsl:template match="prnr">~Nr~<xsl:value-of select="."~</xsl:template>
            <xsl:template match="prname">~Name~<xsl:value-of select=".">~</xsl:template>

            <xsl:template match="price">
            xsl:choose
            <xsl:when test='@country="de"'>~Price~<xsl:value-of select="." />~</xsl:when>
            xsl:otherwise
               xsl:text</xsl:text>
              </xsl:otherwise>
            </xsl:choose>
            </xsl:template>

            </xsl:stylesheet>

            Ich hatte halt jedes mal ein ein xsl template genommen. Nun muss ich ja ganz außen eines für das Produkt nehmen und da klappt jetzt gar nichts mehr.

            Kannst Du mir da noch einmal helfen?

            Danke schon mal, Du bist hier echt mein Retter.

            Diese XSL Geschichte ich ein Bruchteil des gesamten Projekts was ich für meinen Bruder mache, aber es aht mich bisher die meiste Zeit gekostet, da ich wirklich nur teste und verzweifel.

            Danke

            Manu

            1. Hallo Manuela,

              dsa klappt jetzt, ich kriege nun diese Angaben sauber aus dem XML raus. Nur klappt jetzt leider mein choose nicht mehr :-(

              Da offenbar nur auf country="de" geprüft wird, sollte diese Abfrage bzgl. meines vorherigen Postings reichen:
              <xsl:value-of select="prprice[@country='de']"/>

              Grüße,
              Thomas

              1. Hallo Thomas,

                fühl Dich geküsst und umarmt!

                Es geht!!!!!!

                Danke Danke Danke

                Jetzt hab ich hoffentlich alles zusammen, was ich brauch.

                Bis denne

                Manuela

                P.S: So langsam versteh ich die Syntax ;-)