XML- tutoriaal

XML TUIS XML Inleiding XML Hoe om te gebruik XML-boom XML-sintaksis XML elemente XML-kenmerke XML Naamruimtes XML vertoon XML HttpRequest XML-ontleder XML DOM XML XPath XML XSLT XML XQuery XML XLink XML valideerder XML DTD XML-skema XML-bediener XML voorbeelde XML Vasvra XML-sertifikaat

XML AJAX

AJAX Inleiding AJAX XMLHttp AJAX-versoek AJAX-reaksie AJAX XML-lêer AJAX PHP AJAX ASP AJAX-databasis AJAX toepassings AJAX voorbeelde

XML DOM

DOM Inleiding DOM nodusse Toegang tot DOM DOM Node Info DOM Node Lys DOM deurkruis DOM Navigeer DOM Kry waardes DOM Verander nodusse DOM Verwyder nodes DOM vervang nodusse DOM Skep nodusse DOM Voeg nodes by DOM Kloon Nodes DOM Voorbeelde

XPath handleiding

XPath Inleiding XPath-nodes XPath-sintaksis XPath-asse XPath-operateurs XPath voorbeelde

XSLT- tutoriaal

XSLT Inleiding XSL-tale XSLT-transformasie XSLT <sjabloon> XSLT <waarde-van> XSLT <vir-elk> XSLT <sorteer> XSLT <if> XSLT <kies> XSLT Pas toe XSLT op die kliënt XSLT op die bediener XSLT Wysig XML XSLT voorbeelde

XQuery- tutoriaal

XQuery Inleiding XQuery voorbeeld XQuery FLWOR XQuery HTML XQuery-bepalings XQuery-sintaksis XQuery Voeg by XQuery Kies XQuery-funksies

XML DTD

DTD Inleiding DTD Boublokke DTD Elemente DTD-kenmerke DTD Elements vs Attr DTD Entiteite DTD voorbeelde

XSD- skema

XSD Inleiding XSD Hoe om XSD <skema> XSD-elemente XSD-kenmerke XSD-beperkings

XSD -kompleks

XSD-elemente XSD leeg Slegs XSD-elemente Slegs XSD-teks XSD gemeng XSD-aanwysers XSD <enige> XSD <anyAttribute> XSD-vervanging XSD voorbeeld

XSD data

XSD-string XSD datum XSD Numeries XSD Diverse XSD-verwysing

Webdienste _

XML Dienste XML WSDL XML SEEP XML RDF XML RSS

Verwysings

DOM Node Tipes DOM Node DOM NodeLys DOM NamedNodeMap DOM-dokument DOM Element DOM-kenmerk DOM teks DOM CDATA DOM Kommentaar DOM XMLHttpRequest DOM-ontleder XSLT-elemente XSLT/XPath-funksies

XML -elemente vs. eienskappe


In XML is daar geen reëls oor wanneer om eienskappe te gebruik en wanneer om kinderelemente te gebruik nie.


Gebruik van elemente vs. eienskappe

Data kan in kinderelemente of in eienskappe gestoor word.

Kyk bietjie na hierdie voorbeelde:

<person sex="female">
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

<person>
  <sex>female</sex>
  <firstname>Anna</firstname>
  <lastname>Smith</lastname>
</person>

In die eerste voorbeeld is seks 'n eienskap. In die laaste is seks 'n kinderelement. Beide voorbeelde verskaf dieselfde inligting.

Daar is geen reëls oor wanneer om eienskappe te gebruik en wanneer om kinderelemente te gebruik nie. My ervaring is dat eienskappe handig is in HTML, maar in XML moet jy probeer om dit te vermy. Gebruik kinderelemente as die inligting soos data voel.


My gunsteling manier

Ek hou daarvan om data in kinderelemente te stoor.

Die volgende drie XML-dokumente bevat presies dieselfde inligting:

'n Datum-kenmerk word in die eerste voorbeeld gebruik:

<note date="12/11/2002">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

'n Datumelement word in die tweede voorbeeld gebruik:

<note>
  <date>12/11/2002</date>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

'n Uitgebreide datumelement word in die derde gebruik: (DIT IS MY GUNSTELING):

<note>
  <date>
    <day>12</day>
    <month>11</month>
    <year>2002</year>
  </date>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>


Vermy die gebruik van eienskappe?

Moet jy die gebruik van eienskappe vermy?

Sommige van die probleme met eienskappe is:

  • eienskappe kan nie veelvuldige waardes bevat nie (kinderelemente kan)
  • eienskappe is nie maklik uit te brei nie (vir toekomstige veranderinge)
  • eienskappe kan nie strukture beskryf nie (kinderelemente kan)
  • eienskappe is moeiliker om deur programkode te manipuleer
  • kenmerkwaardes is nie maklik om teen 'n DTD te toets nie

As jy eienskappe as houers vir data gebruik, eindig jy met dokumente wat moeilik is om te lees en in stand te hou. Probeer elemente gebruik om data te beskryf. Gebruik eienskappe slegs om inligting te verskaf wat nie relevant is vir die data nie.

Moenie so eindig nie (dit is nie hoe XML gebruik moet word nie):

<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>

'n Uitsondering op my kenmerkreël

Reëls het altyd uitsonderings.

My reël oor eienskappe het een uitsondering:

Soms ken ek ID-verwysings aan elemente toe. Hierdie ID-verwysings kan gebruik word om toegang tot XML-elemente te verkry op baie dieselfde manier as die NAAM- of ID-kenmerke in HTML. Hierdie voorbeeld demonstreer dit:

<messages>
<note id="p501">
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

<note id="p502">
  <to>Jani</to>
  <from>Tove</from>
  <heading>Re: Reminder</heading>
  <body>I will not!</body>
</note>
</messages>

Die ID in hierdie voorbeelde is net 'n teller, of 'n unieke identifiseerder, om die verskillende notas in die XML-lêer te identifiseer, en nie 'n deel van die notadata nie.

Wat ek hier probeer sê, is dat metadata (data oor data) as eienskappe gestoor moet word, en dat data self as elemente gestoor moet word.