Hieronder vindt u een voorbeeld van een (X)HTML-webpagina die XML-invoegelementen bevat:
- De XML-invoegelementen worden via een Javascript in het (X)HTML-bestand uit een XML-bestand opgehaald.
- De rode doorlopende scheidslijnen tussen de tekst zijn een voorbeeld van zo'n XML-invoegtoepassing.
- Met deze methode kunnen XML-elementen tussen de tekst in de BODY-sectie worden geplaatst.
- In 'Voorbeeld 1 van XML' en 'Voorbeeld 2 van XML' staan de XML-elementen steeds onder de BODY-sectie (in het XSL-bestand).
- De browsers Firefox (2.0) / Netscape en Internet Explorer (7.0) hebben geen enkele moeite met het laden van deze XML-invoegelementen via een Javascript.
- De browser Opera (9.02) daarentegen krijgt dit type XML-invoegelementen soms pas geladen nadat het (X)HTML-bestand twee à drie keer achter elkaar opgestart wordt.
- De webmaster vermoedt dat het betreffende Javascript debet is aan de storing in Opera.
- Ook alle tekst hier zou in principe per alinea in een XML-bestand geplaatst kunnen worden. Maar dat is een ingewikkelde operatie, omdat er dan voor de tekst per alinea telkens aparte tags met de betreffende tekst ertussen in in het XML-bestand gedefinieerd moeten worden.
- De tekst in de eerste / tweede alinea en verder zou dan in een tag als <alinea1></alinea1> / <alinea2></alinea2> enzovoorts geplaatst moeten worden.
- Het gebruik van XML heeft dus alleen zin als het om tekst of andersoortige weergaves zoals de rode scheidslijn gaat, die geregeld worden gebruikt en steeds weer terugkomen in één of meer (X)HTML-bestanden.
- En als alle tekst van een pagina via een XML-bestand zou worden aangeboden, dan is er nog een opmaakprobleem. Want als in een alinea één of meerdere woorden onderstreept of vet weergegeven moeten worden, kan die opmaak niet in het XML-bestand meegenomen worden. Dan zou een alinea in meerdere stukken moeten worden opgedeeld in het XML-bestand waarbij de op te maken woorden aparte stukjes in de database moeten vormen; het is kortom een operatie die het schrijven en redigeren van tekst onoverzichtelijk en inefficiënt maakt.
- In dit kader dient men in gedachte te houden dat XML op de eerste plaats bedoeld is om data (hiërarchisch en als eenheden) te structureren, en niet om afzonderlijke tekst(delen) aan te bieden voor weergave en opmaak in een (X)HTML- of XSLT-bestand.
- Teksteenheden (woorden, zinnen en alinea's) kunnen beter gelijk in (X)HTML worden aangeboden. (X)HTML is immers nu eenmaal dé aangewezen weergave- en opmaaktaal voor webpagina's.
- Bij deze methode van gebruik van XML in (X)HTML is sprake van zogenaamde 'XML parsing'.
- W3 Schools zegt er het volgende van: "To manipulate an XML document, you need an XML parser. The parser loads the document into your computer's memory. Once the document is loaded, its data can be manipulated using the DOM. The DOM treats the XML document as a tree." (uit http://www.w3schools.com/xml/xml_parser.asp).
- Bovenstaande zin "Ter illustratie ... voorbeeld van):" is hieronder terug te vinden in de tag <alinea1></alinea1> in het XML-bestand 'Voorbeeld.xml':
-
<tekst>
<alinea1>Ter illustratie van 'XML parsing' worden hier enkele voorbeelden getoond zoals die in het XML-bestand en dit XHTML-bestand worden gerealiseerd (deze zin is er zelf overigens een voorbeeld van):</alinea1>
</tekst>
- Het bestand 'Voorbeeld.xml' is verbonden met dit (X)HTML-bestand waar de tekst vanuit de data in het XML-bestand zichtbaar wordt door onderstaande tag:
-
<span id="alinea1"></span>
- De feitelijke verbinding tussen het XML-bestand en (X)HTML-bestand wordt tot stand gebracht door het onderstaande Javascript:
-
<script language="JavaScript" type="text/javascript">
<!--
var xmlDoc;
function loadXML()
{
//load xml file
// code for IE
if (window.ActiveXObject)
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load("voorbeeld.xml");
getmessage();
}
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
{
xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.load("voorbeeld.xml");
xmlDoc.onload=getmessage;
}
else
{
alert('Your browser cannot handle this script');
}
}
function getmessage()
{
document.getElementById("doorlopende_lijn").innerHTML=xmlDoc.
getElementsByTagName("doorlopende_lijn")[0].childNodes[0].nodeValue;
document.getElementById("alinea1").innerHTML=xmlDoc.
getElementsByTagName("alinea1")[0].childNodes[0].nodeValue;
}
//-->
</script>
- De rode scheidslijn die een aantal keer in dit bestand wordt gebruikt wordt op dezelfde wijze via het Javascript hierboven vanuit het XML-bestand gegenereerd.
- Hieronder worden de tag voor de weergave van de scheidslijn in het (X)HTML-bestand:
-
<span id="doorlopende_lijn"></span>
- ... en de tag met de inhoud uit het XML getoond:
-
<tekst>
<doorlopende_lijn>–––––––––––––––––––––––––––––––––––––––––</doorlopende_lijn>
</tekst>
- Conclusie. XML parsing is in feite te beperkt in zijn mogelijkheden om een interessant alternatief voor XSL in XML-dataverwerking te zijn. Het enige voordeel is dat deze vorm van XML-invoegtoepassing binnen de BODY-sectie en dus tussen de gewone tekst geschiedt, terwijl de XSL-opmaakoptie tot dusverre alleen de XML-invoegtoepassing onder de tekst van de BODY-sectie toelaat.
- Opmerking. In 'Voorbeeld 4 van XML' wordt er een alternatief voor 'XML-parsing' geboden, namelijk met XML-invoegtoepassingen binnen de BODY-sectie in het XSL-(opmaak)bestand.