Toon posts:

[XML] well-formed check met expat

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een xml-file die ik door een parser heen trek. Naar mijn weten zou de parser automatisch een foutmelding moeten geven wanneer de file niet well-formed is. Als ik de file bewust niet well-formed maak dan gebeurt er dus verder helemaal niets, hij geeft geen foutmelding, helemaal niets noppes nada. De xml is als volgt (deze klopt dus niet, er zou dus een foutmelding moeten komen denk ik zo):

<?xml version="1.0" encoding="UTF-8"?>
<openblablablaXML username="username" password="password" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.openprovider.nl/new_site/xml/xsd/newDomain.xsd">
<domainRegistration>
<newDomain version="1.0">
<domain>
<domainname>netnation</domainname>
<extension>nl</extension>
<period>1</period>
</domain>
<handle>
<owner-handle>TD000001-NL</owner-handle>
<admin-handle>TD000001-NL</admin-handle>
<tech-handle>TD000001-NL</tech-handle>
</handle>
<nameserver>
<ns-group/>
<ns-name>ns1.netnation.nl</ns-name>
<ns-ip>10.0.0.1</ns-ip>
<ns-name>ns2.netnation.nl</ns-name>
<ns-ip>10.0.0.2</ns-ip>
<ns-name>ns3.netnation.nl</ns-name>
<ns-ip>10.0.0.3</ns-ip>
</nameserver>
</newDomain>
</domainRegistration>
</openXML>


De xsd file is op deze link te vinden op:

http://www.openprovider.nl/new_site/xml/xsd/newDomain.xsd


Wie kan me hier bij helpen? Het volgende probleem is het valideren van bestanden, is het dan makkelijker om de DOM parser te gebruiken?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Expat ondersteunt geen W3C XML Schema validatie.

Je haalt twee zaken door elkaar: well-formed en valid. Een XML document is well-formed als het aan de syntax van XML voldoet. Hierbij wordt er geen rekening gehouden met regels in een DTD of W3C XML Schema.

Een XML document is valid als het aan een schema voldoet voor de taal van het XML document. Dit was vroeger altijd een DTD, maar tegenwoordig spreekt men ook wel vaak over valid als het om een W3C XML Schema of RELAX NG schema gaat.

Als het document wilt valideren tegen een W3C XML Schema zal je een validator moeten zoeken die W3C XML Schema wel support. Bijvoorbeeld Xerces van Apache.

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


Verwijderd

Topicstarter
Ik haal het niet door elkaar. Alleen ik moet 2 dingen tegelijk doen. Als ik de link naar het xsd schema niet meegeef als parameter, dan heb ik dus het kale xml-file en zou dit toch door de expat parser als ongeldig moeten worden beschouwd? Of heb ik het mis? Het valideren is pas de volgende stap, dat klopt, welke parser is dan aan te raden? is een Dom parser niets of is de Xerces parser goed te gebruiken?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
thijsvandam: DOM parser?
DOM is trouwens geen parser: DOM is een soort interface om met een XML parser te kunnen samenwerken. In het geval van de DOM levert de parser een boomstructuur af die overeenkomt met de structuur van het XML document.

De W3C DOM is een taal onafhankelijke standaard (in dit geval is een standaard niet positief) voor dergelijke boomstructuren, maar er zijn veel meer DOM achtige klasse structuren. Voor Java bijvoorbeeld JDOM en XOM.

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


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
thijsvandam: Ik haal het niet door elkaar.
Nou ja, dat beoordeel ik graag zelf ;) .
Als ik de link naar het xsd schema niet meegeef als parameter, dan heb ik dus het kale xml-file en zou dit toch door de expat parser als ongeldig moeten worden beschouwd?
Expat support geen W3C XML Schema zoals ik zojuist al zei, dus hij zal het XML document ook niet valideren tegen dit schema. Of je het nu aangeeft of niet maakt verder niet uit. Expat controleert alleen of het document well-formed is, wat niets te maken heeft met valid zijn.
welke parser is dan aan te raden? is een Dom parser niets of is de Xerces parser goed te gebruiken?
Het hangt er vanaf in welke taal je werkt. Voor Java is Xerces een goede keuze omdat het standaard in de J2RE >= 1.4 zit. Wel is het handig om even de meest recent versie erin te hangen: die er standaard bij zit is over het algemeen verouderd.

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


Verwijderd

Topicstarter
Ik maak gebruik van PHP, en ben idd net begonnen met XML, dus dat ik af en toe nog wat termen en begrippen door elkaar haal, dat komt allemaal wel tegen de tijd dat ik het echt helemaal voor de volle 100% heb begrepen.

Werkt Xerces ook icm met php?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

mbravenboer: ik denk dat je hier even overheen leest:
XML:
1
2
3
4
<?xml version="1.0" encoding="UTF-8"?>
<openblablablaXML ...>
...
</openXML>

Dit document is echt niet well-formed hoor, en iedere parser die dit slikt mag linea recta richting TrashCan :z

[ Voor 9% gewijzigd door curry684 op 20-08-2003 11:10 . Reden: K*t-HTML rechten :| ]

Professionele website nodig?


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
[mod: kan er iets met PHP en XML Schema in de titel komen?]

De DOM XML extension in recente PHPs maakt gebruik van Libxml2 en Libxml2 support W3C XML Schema. Dat lijkt mij dus de meest natuurlijke keuze :) (maar ik ben verder niet bekend met PHP, dus misschien dat een PHPer nog iets kan zeggen)

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


Verwijderd

Topicstarter
Dat was nu precies mijn probleem, als ik deze xml-file door de parser heen trek, wordt er helemaal geen fout gegeven, hij slikt dit gewoon. Ik had ook bovenaan vermeldt dat deze xml-file juist niet well-formed was, dat had ik er dus bewust ingezet.

Maar ik gooi er toch zoiezo een andere parser op.

Is volgens jou xerces compatible met php? Dan installeer ik die wel.


In ieder geval alvast bedankt voor de moeite.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
curry684: ik denk dat je hier even overheen leest:
XML:
1
2
3
<openblablablaXML ...>
...
</openXML>
Dit is dus idd een well-formedness probleem. Het lijkt mij sterk dat Expat daar niet over klaagt. Expat is oud, maar geen zooi ;) .

Als je daarna ook nog wilt valideren moet je een parser hebben met W3C XML Schema support. Het well-formedness probleem heeft echter niets met de verwijzing naar een W3C XML Schema te maken: well-formedness problemen moet altijd gerapporteerd worden, of er nu een schema is of niet.

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


Verwijderd

Topicstarter
quote:
--------------------------------------------------------------------------------
curry684: ik denk dat je hier even overheen leest:
xml:
--------------------------------------------------------------------------------
<openblablablaXML ...>
...
</openXML>

--------------------------------------------------------------------------------


--------------------------------------------------------------------------------


Dit is nu juist het probleem als er gewoon <openXML> </openXML> in staat krijg ik logischerwijze geen foutmelding, maar als er : <openblablablaXML> </openXML> in staat krijg ik ook geen error-code terug, en die zou ik wel moeten krijgen neem ik aan???

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
thijsvandam: maar als er : <openblablablaXML> </openXML> in staat krijg ik ook geen error-code terug, en die zou ik wel moeten krijgen neem ik aan???
Het zou een probleem in de PHP bindingen kunnen zijn, maar in ieder geval niet in Expat:

Bash:
1
2
> /pkg/expat/bin/xmlwf bla.xml
bla.xml:26:2: mismatched tag

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


Verwijderd

Topicstarter
Gevonden!! Althans, ff Apache gereboot, en nu krijg ik een foutmelding (dit is de eerste keer dat ik blij ben dat ik een foutmelding krijg, hehe).

Maar daar heb ik nu dus het "probleem" met het valideren nog niet opgelost. Ik gebruik dus PHP en is het mogelijk om die xerces parser te gebruiken? Want ik heb gelezen dat die wel valideert. Is die aan te raden volgens jou?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Xerces is Java, dus dat zal niet zo lekker samenwerken. Je zou het wel als apart tooltje kunnen aanroepen en daarna alsnog gewoon met Expat parsen, maar dat schiet niet zo op allemaal.

Het is denk ik het meest logisch om Libxml2 te gebruiken via de DOM XML extension (zie linkje hierboven).

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


Verwijderd

Topicstarter
Er bestaat een php-xerces, maar heb je toevallig enig idee of dit wat is? Deze is te vinden op : http://ggodlewski.host.sk/php/xerces/

Of is DOM XML ook wel te doen?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
thijsvandam: Er bestaat een php-xerces, maar heb je toevallig enig idee of dit wat is?
Nee geen idee ... Xerces is prima, maar hoe deze binding werkt? Daarvoor zal je iemand moeten vinden die in PHP met W3C XML Schema heeft gewerkt (vandaar dat ik om PHP in de topic titel vroeg ;) ).
Of is DOM XML ook wel te doen?
Tuurlijk, ik denk dat dat in sowieso de "standaard"/"te adviseren" manier van werken wordt in PHP.

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

Pagina: 1