Toon posts:

mySQL > PHP > XML

Pagina: 1
Acties:
  • 122 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik wil graag in een PHP script een query doen op een mySQL db. Vervolgens wil ik die data/meuk niet houden in array en displayen op die pagina, maar ik wil dat als XML pakketje gebruiken. Ik wil dat andere deze data op kunnen halen in als XML file. Zij moeten dat weer kunnen gebruiken in een PHP script.

Natuurlijk moet dit maken van zo'n XML pakketje een beetje generiek gebeuren iets als XMLpakketje = fixXML($query)... zeg maar >:)

Misschien dat deze vraag al vaak is gesteld, maar ik kon niet direcht het antwoord vinden, mijn excuses (8>

  • Grum
  • Registratie: Juni 2001
  • Niet online
misschien moet je eens kijken naar xmlrpc ... zeker omdat je wil dat een andere pagina het ook gaat gebruiken ...

  • koekoek
  • Registratie: Mei 2000
  • Laatst online: 28-06 17:00

koekoek

 

Ik zit met een soort gelijk probleem:

Ik wil als ik een query doe op een mySQL database dat ik dan een xml pakketje terug krijgt ipv een recordset. Dit is vast niet in 1x mogelijk, moet je dus via loopjes een array voorzien van xml tags en zo een xml document maken ?
Ik hoop dat er een wat generieke manier is.

Iemand ?

Verwijderd

Topicstarter
Op donderdag 11 oktober 2001 23:37 schreef Grum_ het volgende:
misschien moet je eens kijken naar xmlrpc ... zeker omdat je wil dat een andere pagina het ook gaat gebruiken ...
thanx, maar dit is denk iets te veel van het goede

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Het punt is dat dit niet fraai op een generieke manier is op te lossen...

Het relationele datamodel is in feite veel beperkter dan XML en het is dan ook onzin om relationele data direct naar XML om te zetten:
code:
1
2
3
4
5
6
7
8
9
10
<result>
    <row>
      <id>0</id>
      <name>Boeh</name>
    </row>
    <row>
      <id>1</id>
      <name>Blah</name>
    </row>
</result>

Dat is dus niet de manier... Dit kan je echter wel generiek implementeren met een beetje reflectie over je resultaten (logisch).

Je wilt echter meestal een gebruiksvriendelijkere/betere respresentatie die meer als XML 'aanvoelt'.

De meeste 'echte' database systemen hebben daarvoor tegenwoordig een soort specificatie taaltje die beschrijft hoe de relationele data gemapt moet worden naar XML data. Vooral het systeem van DB2 schijnt behoorlijk goed te zijn.

Voor MySQL is dit er niet en zal je dus zelf iets moeten doen. Er zijn twee mogelijkheden:

1. Maak het niet generiek en implementeer het dus voor alle gevallen. Dit komt dus op een handmatige conversie neer van de query resultaten naar XML vorm.

2. Doe het in 2 stappen: gebruik de bovenstaande manier om de resultaten naar 'lelijke' XML om te zetten. Gebruik daarna XSLT om deze XML file te transformeren naar een aantrekkelijkere vorm.

Uiteraard is er nog een derde methode: ontwerp zo'n taaltje die de omzetting van relationele data naar XML data beschrijft, maar ik neem maar ff aan dat dat ver buiten de bedoelingen en mogelijkheden valt...


Oplossing 1 is vrij veel en vervelend programmeerwerk. Het resultaat is wel erg snel. Oplossing 2 is wellicht wat trager, maar is minder programmeerwerk om de omzetting op een meer 'declaratieve' wijze gebeurt. Ook is het leuker werk.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
thanx mbravenboer, dit was deels wat ik bedoelde! Maareh..

een handmatige conversie neer van de query resultaten naar XML vorm.
Hoe doe je dat het beste?

Gebruik daarna XSLT om deze XML file te transformeren naar een aantrekkelijkere vorm.
XSLT is toch een soort stylesheet waarmee je kan opgeven hoe je data op het scherm kiepert... of bedoel je iets anders?

  • koekoek
  • Registratie: Mei 2000
  • Laatst online: 28-06 17:00

koekoek

 

Okay mbravenboer bedankt voor je heldere uitleg. Ik ga het via methode 1 doen en zelf de data in xml vorm gieten. Nu ik er verder over na denk moet ik in mijn apje maar een paar query resultaten opleuken naar XML formaat.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Mics: [een handmatige conversie neer van de query resultaten naar XML vorm.]
Dom coden ;) . Je kan het op twee manieren doen: simpel via ranzige code je resultset vertalen naar XML door middel van een template of direct in je code het resultaat opbouwen, net als wat je met HTML doet. Je kan ook een DOM opbouwen (geheugen-structuur voor een XML document) en deze daarna platslaan naar een String.
Hoe doe je dat het beste?
DOM levert altijd een correct XML document, maar gebruikt wat geheugen. Resultaat handmatig opbouwen met platte tekst kan foutgevoeliger zijn.
[Gebruik daarna XSLT om deze XML file te transformeren naar een aantrekkelijkere vorm.]
XSLT is toch een soort stylesheet waarmee je kan opgeven hoe je data op het scherm kiepert... of bedoel je iets anders?
XSLT is een zeer krachtige transformatie taal waarmee je XML documenten kan transformeren naar andere XML documenten of een willekeurig ander formaat zoals plain-tekst, LaTeX of wat dan ook. XSLT wordt zeer veel gebruik voor de conversie van XML naar XHTML, waardoor het in die situatie inderdaad de functie heeft van een soort weergave systeem voor XML files.

XSLT is echter absoluut meer dan dat. Het is uitermate geschikt voor het simpelweg transformeren (herstructureren) van XML documenten. Eigenlijk is het hiervoor zelfs beter geschikt dan voor de conversie naar (X)HTML.

Je kan dus het lelijke XML formaat heel gemakkelijk transformeren met XSLT naar een fraaiere vorm. Ook kan je hierbij eventueel je XML file combineren met andere XML bronnen. Dit laatste klinkt heel moeilijk, maar het is echt heel simpel. Je kunt gewoon gebruik maken van meerdere XML docs om 1 XML document op te leveren als resultaat.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

[beetje offtopic]
Weet 'r iemand een provider die XSLT ondersteunt?
[/beetje offtopic]

Verwijderd

Topicstarter
Ok, thanx!
Op vrijdag 12 oktober 2001 00:27 schreef mbravenboer het volgende:

Je kan dus het lelijke XML formaat heel gemakkelijk transformeren met XSLT naar een fraaiere vorm.
Zou je dit nog een beetje kunnen toelichten, want het is me nog niet helemaal duidelijk. Voorbeeld?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Voor de liefhebbers:

Je kan XSL ook uitbreiden op allerlei manieren.... IBM heeft daar net een leuk artikel over. Als laatste voorbeeld hebben ze het direct aanroepen van een database vanuit XSL genomen (zie helemaal onderaan dus). Ranzig of niet, leuk is het wel :) . Er staan nog veel meer extreem leuke voorbeelden tussen...

Hier staat het.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Mics: Ok, thanx!
Graag gedaan :) .
Zou je dit nog een beetje kunnen toelichten, want het is me nog niet helemaal duidelijk. Voorbeeld?
Je zou met behulp van XSL heel makkelijk dit:
code:
1
2
3
4
5
6
7
8
9
10
<result>
    <row>
      <id>0</id>
      <name>Martin</name>
    </row>
    <row>
      <id>1</id>
      <name>Kees</name>
    </row>
</result>

Kunnen transformeren naar dit:
code:
1
2
3
4
5
6
7
8
9
<members>
    <person id="0">
       <name>Martin</name>
    </person>

    <person id="1">
       <name>Kees</name>
    </person>
</members>

Stel je voor dat het in dit geval om een zeilclub gaat. In een andere tabel staan de boten die iemand heeft:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<result>
     <row>
        <personid>0</personid>
        <typeid>1</typeid>
        <bouwjaar>1996</bouwjaar>
     </row>
     <row>
        <personid>0</personid>
        <typeid>2</typeid>
        <bouwjaar>1995</bouwjaar>
     </row>
     <row>
        <personid>1</personid>
        <typeid>1</typeid>
        <bouwjaar>1998</bouwjaar>
     </row>
<result>

en je ook nog een andere tabel hebt met typen van boten:
code:
1
2
3
4
5
6
7
8
9
10
11
<result>
    <row>
       <id>1<id>
       <name>Europe</name>
    </row>

    <row>
       <id>2<id>
       <name>Laser</name>
    </row>
</result>

Al deze data kan dus generiek opgeleverd worden. Dit is allemaal 'lelijk'.

Je zou dit nu met XSLT heel gemakkelijk kunnen omzetten naar een (misschien) fraaier formaat:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<members>
    <person id="0">
       <name>Martin</name>
       <boats>
          <boat>
            <type id="1">
                <name>Europe</name>
            </type>
            <bouwjaar>1996</bouwjaar>     
          </boat>
          <boat>
            <type id="2">
                <name>Laser</name>
            </type>
            <bouwjaar>1995</bouwjaar>     
          </boat>
       </boats>     
    </person>

    <person id="1">
       <name>Kees</name>
       <boats>
          <boat>
            <type id="1">
                <name>Europe</name>
            </type>
            <bouwjaar>1998</bouwjaar>     
          </boat>
       </boats>     
    </person>
</members>

Dit voelt veel meer als XML aan :) .

Het is slechts een stom voorbeeld, maar het geeft wel de capaciteiten aan van XSLT (de stylesheet mag je zelf verzinnen als je de docs hebt doorgelezen ;) ).

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Check bijvoorbeeld Slashdot.

Ik snap niet hoe ze content uit een database plukken en dat omtoveren naar XML. :?

Verwijderd

Topicstarter
mbravenboer harstikke bedankt, voor al je posts, erg verhelderend.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
fruit.Mics: harstikke bedankt, voor al je posts, erg verhelderend.
Mooi en graag gedaan :) . Er zijn hier vrij veel vragen over en nu kunnen we tenminste UTFS zeggen ;)

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Op vrijdag 12 oktober 2001 04:23 schreef Agijsbro het volgende:
Check bijvoorbeeld Slashdot.

Ik snap niet hoe ze content uit een database plukken en dat omtoveren naar XML. :?
Met for en while loopjes dingen naar een bestand schrijven :)

Verwijderd

Topicstarter
Op vrijdag 12 oktober 2001 14:48 schreef mbravenboer het volgende:

Mooi en graag gedaan :) . Er zijn hier vrij veel vragen over en nu kunnen we tenminste UTFS zeggen ;)
Om echt te voltooien voor een perfect UTFS hoor er gienlijk nog een stukkie PHP-code bij... die ik niet weet *D
Pagina: 1