Frage zu XML

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Frage zu XML

Beitrag von Jan »

Ich habe gerade beim Stöbern in Docs eine Sequenz gefunden, die ich nicht so ganz verstehe. Vokabularmäßig ist das klar, aber nicht vom Sinn bzw. vom Verständnis her, oder wie ich das umzusetzen habe. Zufällig habe ich das, was damit erreicht werden soll, schon früher in meinem Code umgesetzt. Aber eher manuell, was wohl nicht ganz der Sinn der Sache sein kann.
If you use XML, you need to use a namespace-aware parser.
Kann mir jemand erklären was das genau sagen will, und wie ich das berücksichtige?

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von brandelh »

Namespace bezieht sich normal darauf, dass die Namen von links gleich anfangen (DLL, .NET).
Bei XML hab ich sowas schon mal gesehen:

<MED:ID>

also nicht auf alle "ID" Felder reagieren, sondern nur die von MED ... oder

Code: Alles auswählen

<Stamm>
   <ID>
</Stamm>
Nur die ID von Stamm ...
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von brandelh »

Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von Jan »

Hallo Hubert,

ja, das mit dem Präfix vor dem : hatte ich schon geahnt. Und wie gesagt auch schon mal umgesetzt - vermutlich etwas naiv.

Der Punkt ist das ich XML-Strings habe, die mehrere Namespaces haben. Und mir stellt sich die Frage wie ich die auslese bzw. feststelle, welcher denn nun der für mich wichtige ist.

In der Onlinehilfe ist zumindest kein Wort "Namespace" zu finden. Und die XML-Funktionen sind eher sparsam dokumentiert. Alaska meinte zwar zu mir, das da noch was kommen würde, auch Beispiele. Aber nun ja, das kann erfahrungsgemäß etwas dauern, dauert ja auch schon mehr als ein Jahr. Wie auch die von Frank++ zugesagte JSON-Unterstützung.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von brandelh »

Die Beschreibung von Alaska kann sich nur auf die Anwendung deren Funktionen richten.
Der Parser als solcher wäre wichtig, wichtiger die WebGUI etc. ...

Aber welche Variabe du in welchem Namespace für dein Anwendungsproblem brauchst, das kann dir Alaska nicht beantworten.
Die LINKS im Namespace verweisen eigentlich auf die Dokumentation dieses Namespace und in den XLS sollte eine ausführliche Dokumentation zu der Variablen enthalten sein.

Beispiel (erfunden) B:IBAN => Verweis auf xyz... => dort steht was eine IBAN ist, welche Regeln sie einhalten muss etc. (in XLS ?)
Gruß
Hubert
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von Jan »

Hubert,

das ist mir schon klar. Und ich hab das ja auch alles zum Laufen bekommen in meinem Code. Aber da XML nicht so ganz meine Ebene ist gibt es garantiert elegantere und/oder sicherere Wege, das zu regeln. Was mir fehlt ist das HowTo, nicht das "Welcher Namespace ist der richtige für mich". Denn DIE Frage kann mir in der Tat niemand beantworten außer dem Lieferanten der XML. Aber das wie mit dem Konstrukt ganz allgemein umgehen wäre schön zu wissen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von Herbert »

Hubert, der Namespace ist nicht einfach ein Haupt-Tag. Das ist falsch.
Der Namespace besteht aus einem Namen und einer URL.

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
  <DocumentTag xmlns:xsi="http://www.w3.org/YourUrl"
 	xsi:noNamespaceSchemaLocation="YourFile.xsd">
   <Next>
     Example for xmlNamespace type
   </Next>
 </DocumentTag>
Hier ist der Namespace-Name = xsi und die Namespace-URL = http://www.w3.org

Das Ganze gehört zum sog. Node

Bitte verwchselt nicht diese Informationen mit etwelchen Tags eines XML.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von Herbert »

brandelh hat geschrieben:

Code: Alles auswählen

<Stamm>
   <ID>
</Stamm>
Stamm hier ist das Rootelement
ID ist ein Childelement

Weiter gibt es noch Attribute
<Myname Line=3/>

und Werte
<MyValue="Ich"/>
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von Jan »

Das Problem das ich habe ist: Ich habe ein xmlns:fs, ein xmlns:atom, und ein xmlns:ns4. Alle drei mit Links dahinter. Zusätzlich gibt es noch ein gx:, das aber ohne Link einfach so auftaucht. Welcher ist nun der richtige, wie entscheide ich das, wie finde ich den korrekten? Oder gibt es nicht DEN korrekten, sondern es ist abhängig von anderen Faktoren?

Achso: In meinem speziellen Fall benötige ich ns4: und gx:. Und darauf gestoßen bin ich nur, weil mein Code plötzlich nicht mehr funktioniert. Alles, was nun ns4: ist, hatte vorher garnichts. gx: gab es schon vorher, da hat sich nichts getan.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von brandelh »

Jan, genau das ist es doch was ich meinte (auch wenn ich in meinen Beispielen nicht so toll war ;-) ) ...

xmlns:fs => link folgen, Variable suchen und Beschreibung lesen. Dann entscheiden ist das das was ich brauche ...
xmlns:atom => link folgen, Variable suchen und Beschreibung lesen. Dann entscheiden ist das das was ich brauche ...

oder Hersteller fragen, welcher der richtige NameSpace für deinen Zweck ist.

Zum Glück muss ich nur erstellen und nicht einlesen ...
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von Herbert »

Hast keine .XSD-datei?
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von Herbert »

Jan hat geschrieben:Das Problem das ich habe ist: Ich habe ein xmlns:fs, ein xmlns:atom, und ein xmlns:ns4. Alle drei mit Links dahinter.
Das sind 3 Namespaces :shock:
Bei atom muss den Tom fragen [-X

Im Ernst, du musst wissen, was der Lieferant des XML genau definiert und was du damit anfangen sollst. Daher die Frage nach einem .XSD.
Mich verwirrt ein wenig, dass alles so beeinander sein soll.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von Jan »

Danke für Eure Ideen und Hinweise.

Ich hab mal alle drei Links aufgerufen - nur der atom: führt auf eine gültige Seite, aber er ohne weitere Infos

Eine .xsd habe ich nicht. Streng genommen habe ich nicht einmal eine xml. Ich erhalte die Daten nur online als String.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von Herbert »

eh... und was musst denn damit anstellen?
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von Jan »

Hallo Herbert,

das ist eine Abfrage in einer Online-Datenbank. Ich schick denen eine POST, GET-, oder DELETE-Anfrage, und bekomm von denen einen XML-String zurück, den ich dann verhackstückeln muß.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von Herbert »

genau deshalb brauchst du doch alle .xsd, damit du den Aufbau der XML kennst und entsprechend die Variablen auslesen resp. schreiben kannst.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von Jan »

Herbert,

sorry, das gibt keine .xsd. Nur den XML-String.

Die Doku zu den XML gibt es Online auf der Homepage der Datenbank. Da steht aber nichts zu Namespaces.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von Tom »

Eigentlich ist das hier:

https://de.wikipedia.org/wiki/Namensraum_%28XML%29

recht gut erklärt. Bei SOAP-Services mit WSDL bekommt man übrigens die URLs aller Beschreibungsdateien im Response-Header. Näheres dazu auch hier:

https://de.wikipedia.org/wiki/XML_Schema

Schau Dir einfach mal die Antworten, die Du bekommst, genau an - am besten in einem XML-Editor.

Der Namespace definiert quasi zusammenhängende Objekte. Eine XML-Datei ist ja im Prinzip eine Dokumentenstruktur, die man als Daten interpretieren kann. Die Namespaces definieren übergeordnete Zusammenhänge und Konventionen. Einfach gesagt kann man es z.B. so machen

<HUNDE>
<HUND ID='Köter' SCHWANZLAENGE='50'/>
<HUND ID='Mistköter' SCHWANZLAENGE='70'/>
</HUNDE>

Du kannst nun auch eine XML-Teilsprache "hund" definieren und als Namespace deklarieren. Wenn man den Namespace einbindet, erweitert sich die XML-Definition um deren Eigenschaften. Ein einfaches Beispiel dafür ist SOAP selbst - SOAP-Envelopes migrieren den Namespace <xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope">. Der Header einer SOAP-Nachricht, die ja eigentlich simples XML ist, heißt dann nicht mehr <HEADER>, sondern <soapenv:Header>. Will man genaueres darüber wissen, wie ein SOAP-Envelope-Header ausschaut, wirft man einen Blick auf die Definitionen, die man über die URL in der Namespace-Definition zurückbekommt. Darin steht dann zum Beispiel, welche Elemente es geben muss, wie oft die vorkommen können usw. Eigentlich hat das fast keine Wirkung - es ist eine Unterstützung, sozusagen eine übergeordnete Definition.

Ein Namespace "hund" könnte also definieren, dass es mindestens immer eine Schwanzlänge geben muss. Jemand, der dann das hier:

<hunde:HUNDE>
<hunde:HUND ID='Köter' SCHWANZLAENGE='50'/>
<hunde:HUND ID='Mistköter' SCHWANZLAENGE='70'/>
</hunde:HUNDE>

zurückbekommt, kann sich darauf verlassen, dass das Schema "hund" eingehalten wurde. Wenn das egal ist oder keinen interessiert, filtert man in den Tags und Attributen einfach alles vor dem Doppelpunkt (einschließlich). :wink: Ansonsten schaut man sich - über die URL zum Namespace - mal die Definition an.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von Jan »

Tom hat geschrieben:<HUNDE>
<HUND ID='Köter' SCHWANZLAENGE='50'/>
<HUND ID='Mistköter' SCHWANZLAENGE='70'/>
</HUNDE>
Tom,

laß das man bloß nicht Martin lesen!!! :-D

Aber ansonsten: Vielen Dank für die Erläuterungen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16501
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Frage zu XML

Beitrag von Martin Altmann »

Jan,
deswegen hat er das Beispiel doch genommen ;-)

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Antworten