Die ID in einem Tag mit auslesen?
Manuela
- xml
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
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
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.
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
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
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
Hallo Manuela,
Am Ende brauch ich folgendes:
~mainnr~0815
prnr~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>
</xsl:text>
</xsl:template>
Evtl. muss noch der systemspezifische Zeilenumbruch (hier \n = 
) angepasst werden.
Grüße,
Thomas
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
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
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 ;-)