Avatar billede Droa Seniormester
27. juli 2015 - 01:24 Der er 8 kommentarer og
1 løsning

Regler for validering af xml

Hej Eksperter.

Jeg sidder og er igang med at lære lidt i at parse og compile data.

Jeg har valgt og bruge Xml i denne research, da jeg kan bruge de originale Parsers til og tjekke min data er korrekt.

Jeg bruger denne lille Xml til og unit teste med


<?xml version="1.0" encoding="UTF-8"?>
<!-- This is a comment -->
<test:flowers test:debug="1">
<test:flower test:name="sunflower" test:growtime="90">The sunflower is a pretty flower</test:flower>
<test:flower test:name="rose" test:growtime="180">The rose is red<!-- Another Comment --></test>
<test:flower test:name="lilly" test:growtime="120" />
</test:flowers>


men jeg gad godt have en lidt mere detaljeret xml til og unit teste med.

men jeg har problemer med og læse reglerne for Xml nogen steder fra.

f.eks hvor strict man skal være med TextNodes og Attribut Nodes.

f.eks må en attribut godt se sådan her ud.


attributeName = "attributeValue"
attributeName= "attributeValue"
attributeName="attributeValue"
attributeName = attributeValue
attributeName= attributeValue
attributeName=attributeValue


og må textnoder godt være uden for root elementet? jeg kan se at noden validators acceptere en textnode efter root elementet er afsluttet, men ikke før.


Test<root></root> = fejl
<root></root>Test = ingen fejl
Test = fejl


det ville være rigtigt rart hvis nogen kunne fortælle mig om hvor strict xml syntaxet skal være, eller om der findes noget let forståeligt dokumentation for det.

på forhånd tak :)
Avatar billede arne_v Ekspert
27. juli 2015 - 01:36 #1
Der skal "" eller '' omkring attribut vaerdier.

Der maa ikke vaere elementer eller text hverken foer eller efter root ellement.
Avatar billede Droa Seniormester
27. juli 2015 - 02:32 #2
alletiders. jeg tror os jeg bare skulle have prøvet med w3.org validator istedet for w3 school's, w3.org virker til og være bedre til og give fejl beskeder.


<?xml version="1.0" encoding="UTF-8"?>
<!-- This is a comment -->
<test:flowers test:debug="1" xmlns:test="test-ns">
<test:flower test:name="sunflower" test:growtime="90">The sunflower is a pretty flower</test:flower>
<test:flower test:name="rose" test:growtime="180">The rose is red<!-- Another Comment --></test:flower>
<test:flower test:name="lilly" test:growtime="120" />
</test:flowers>


rettede lige mit test xml

og jeg kan se w3.org ikke godkender textnoder uden for root dokumentet, det må være en fejl på w3 school's.

jeg ville nu stadig gerne se nogen regl-sæt.

for f.eks

karaktere der må bruges i element navne
karaktere der må bruges i attribut navne
reserveret karaktere i elementer
m.m
Avatar billede arne_v Ekspert
27. juli 2015 - 03:02 #3
Du kan da selv validere. Parse XML i Java eller C#!
Avatar billede arne_v Ekspert
27. juli 2015 - 03:05 #4
W3 er jo definitorisk den rigtige kilde:

http://www.w3.org/TR/2008/REC-xml-20081126/

Men wikipedia artiklen ser OK ud:

https://en.wikipedia.org/wiki/XML
Avatar billede Droa Seniormester
27. juli 2015 - 03:44 #5
jeg gør os dette som en lille leg, jeg kender godt til XmlDocument og XDocument, men ideen var og være kreativ, for at udvide min viden inde for begrebet.

Min regl for den leg jeg har sat igang.


Jeg ikke må bruge Regex expressions, og skal bruge char positions istedet, med hjælp fra String Classen.
Jeg må heller ikke bruge Linq, da det ville gøre legen alt for let.
Jeg må heller ikke bruge namespacet System.Xml.


Legen går ud på at Parse mit lille Xml Exempel ind i Hjemmelavet DomNoder, med en hjemmelavet Xmlparser, og udvikle mine egne redskaber, som jeg savner fra de biblioteker jeg ikke må bruge.


Men mange tak for linkene. Jeg tror det var alt jeg havde brug for, især det første link.
Avatar billede arne_v Ekspert
28. juli 2015 - 02:18 #6
En komplet XML parser er meget kompleks. Og kun at bruge basale String operationer vil kraeve en masse kode.

Hvis du kun vil parse et subset af XML, saa er det noget nemmere.
Avatar billede Droa Seniormester
28. juli 2015 - 03:29 #7
som det er lige pt, vil jeg kun parse et xml dokument,som det er skrevet, ingen former for validering med/af dtd, xsd, xsl eller andre.

så det er bare læsningen af noderne, som destår skrevet, uden processing af det.

det går stille og roligt frem af.

Jeg har lavet noget der minder om XmlReader, jeg har lige lavet undtagelser for CDATA, så den ikke parser indholdet.

Jeg går ud fra at når jeg når ENTITY og Doctype, at jeg får problemer med mit nuværende arkitektur, men det må tiden vise.

som det er lige nu, så er min XmlReader bare en blind reader, uden validering, da den bare spytter noder ud 1 efter en, til et event.

Jeg regner med og lave en nu classe der bruger denne parser, til og læse min xml ind i en mere traditionel XmlDocument/XDocument form, når min parser virker som den skal.
Avatar billede Droa Seniormester
12. september 2015 - 19:50 #8
jeg bliver der lagt et svar? :)
Avatar billede arne_v Ekspert
12. september 2015 - 23:53 #9
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester