Archief - XML : hoe xml in html oproepen en in tabel weergeven. > m.b.v css

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Tsjernobyl

Legacy Member
http://www.w3schools.com/xml/xml_display.asp

Hier staat info over het visualiseren van xml bestand d.m.v. css

Maar wat ik niet direct zie is hoe ze het juist doen.

Eerst geven ze XML file

Code:
-
	<CATALOG>
-
	<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
-
	<CD>
<TITLE>Still got the blues</TITLE>
<ARTIST>Gary Moore</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>Virgin records</COMPANY>
<PRICE>10.20</PRICE>
<YEAR>1990</YEAR>
</CD>

</CATALOG>

Dan de CSS opmaak code.

Code:
CATALOG
{
background-color: #ffffff;
width: 100%;
}
CD
{
display: block;
margin-bottom: 30pt;
margin-left: 0;
}
TITLE
{
color: #FF0000;
font-size: 20pt;
}
ARTIST
{
color: #0000FF;
font-size: 20pt;
}
COUNTRY,PRICE,YEAR,COMPANY
{
display: block;
color: #000000;
margin-left: 20pt;
}

En dan begrijp ik het niet meer.
Ze laten een code zien waarvan ik niet goed snap hoe of wat.
En kan ik op deze wijze xml in een html pagina laden? bijvoorbeeld <TITLE> en <ARTIST> telkens in apparte tabel.

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/css" href="cd_catalog.css"?>
<CATALOG>
  <CD>
    <TITLE>Empire Burlesque</TITLE>
    <ARTIST>Bob Dylan</ARTIST>
    <COUNTRY>USA</COUNTRY>
    <COMPANY>Columbia</COMPANY>
    <PRICE>10.90</PRICE>
    <YEAR>1985</YEAR>
  </CD>
  <CD>
    <TITLE>Hide your heart</TITLE>
    <ARTIST>Bonnie Tyler</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>CBS Records</COMPANY>
    <PRICE>9.90</PRICE>
    <YEAR>1988</YEAR>
  </CD>
.
.
.
.
</CATALOG>

DarkBone

Legacy Member
Als je naar dat XML document zou surfen, dan zou het opgemaakt moeten worden volgens de CSS die je opgaf (als de browser dat ondersteunt tenminste).
http://www.w3schools.com/xml/cd_catalog_with_css.xml

Als je naar de broncode zou kijken, dan merk je dat het hier enkel om XML gaat (link met CSS gebeurt op de tweede rij). CSS biedt je wel de mogelijkheid om bijvoorbeeld tabellen te maken trouwens.

Naar mijn weten is er nog geen manier om XML in xHTML te embedden (ik heb er ook nog niet echt naar gezocht, dus het zou me niet verwonderen als het kan), maar ik dacht eerder dat W3 nog de specificaties aan het uitwerken was opdat dat wel mogelijk zou zijn.

Maar misschien weten anderen hier meer over?

Yngwie

Legacy Member
mbv css weet ik niet hoe het te doen, maar ik weet wel dat men de klus kan klaren door middel van php, er zijn genoeg xml-parser scripts in php te vinden waarmee je je xml kan omzetten naar enkele arrays. en deze arrays kan je dan in tabellen weergeven in je (x)html

DarkBone

Legacy Member
Dan kan je net zo goed je gegevens in een databank gaan opslaan, die zijn er namelijk beter voor geschikt :)

Tsjernobyl

Legacy Member
als ik een xml file aanmaak met de css "verbinding" op tweede rij erbij krijg ik slechts een wit scherm als ik de xml file open.

raar..

TheCrow7

Legacy Member
En ik XML maar opgeven omdat ik dacht dat dit enkel ging met DOM uit Explorer :ironic:

Iemand ervaring met XML en PHP ? Er wordt al zo lang gewisseld van de manier waarop dat moet gebruikt worden in PHP, is er nu al feitelijk iets standaard ?

In C# en Java is XML support heavenly, maar in PHP is dat om te wenen.

DarkBone

Legacy Member
Tsjernobyl zei:
als ik een xml file aanmaak met de css "verbinding" op tweede rij erbij krijg ik slechts een wit scherm als ik de xml file open.

raar..
Welke browser?

saiko

Legacy Member
om crossbrowser xml weer te geven in een tabel deed ik het als volgt


verwijzing in je xhtml naar de parser (ik werk met externe javascripts)
Code:
function init()
	{
parseNieuws("filenaam.xmll");
maakTabel();
}

de 'parseNieuws' parsed de xml file met behulp van de vlg code (javascript)

Code:
function parseNieuws(sFileName)
{
	//0.escaped fileName herstellen
	sFileName=unescape(sFileName);
		
	//1. instantie van  DOM aanmaken in geheugen  
	//foutdetectie IE
	if (navigator.userAgent.indexOf("MSIE") != -1)
	{
		oDomDoc =  new ActiveXObject("Microsoft.XMLDOM");
	}

	//foutdetectie NN

	if((navigator.appName == 'Netscape') && ( navigator.userAgent.indexOf('opera') == -1))
	{
			oDomDoc = document.implementation.createDocument("Nspace","rootElmnt", null);
	}

	oDomDoc.async = false;				// volledig opladen 
	oDomDoc.validateOnParse=true;		//default : true

	//2. DOM opladen met XML
	oDomDoc.load(sFileName);
	documentLoaded("") ;
	
}

function documentLoaded() 
{
	// foutdetectie met DTD - enkel in IE

	if(navigator.userAgent.indexOf("MSIE") != -1) 	
	{
		var oErrorXML = oDomDoc.parseError;
			if (oErrorXML.errorCode != 0 )
			{
				alert( oErrorXML.reason + '\n Line ' + oErrorXML.line ) ;
			} 
	}
	else
	{
		if(oDomDoc.documentElement.nodeName == "parsererror")
		{
			alert("error")
		}

	}
}

dan maak je je xml op via javascript waar je de tabel dynamisch inlaadt

Code:
	function getXml()
	{
		var nieuwsPosts = oDomDoc.getElementsByTagName("nieuwsitem");
		var j ;
		//for lus die checkt hoeveel nieuwsitems er zijn, en deze dan plaatst in de tabel
		for(var j=0; j<nieuwsPosts.length; j++)
		{
			var sDatum = nieuwsPosts.item(j).getElementsByTagName("datum_nieuwspost").item(0).firstChild.nodeValue;
			var sNieuws = nieuwsPosts.item(j).getElementsByTagName("nieuwspost").item(0).firstChild.nodeValue;

			//de eerste rij wordt aangemaakt
			var tr0 = document.createElement("tr");
			var td0 = document.createElement("td");
			td0.className = "opmaakDatum";
			td0.appendChild(document.createTextNode(sDatum));
			
			//de tweede rij wordt aangemaakt
			var tr1 = document.createElement("tr");
			var td1 = document.createElement("td");
			td1.className = "opmaakNieuws";
			td1.appendChild(document.createTextNode(sNieuws));

			tr0.appendChild(td0);
			tr1.appendChild(td1);

			tbody.appendChild(tr0);
			tbody.appendChild(tr1);
		}
	}

	function maakTabel()
	{
		//tabel wordt aangemaakt met id "tblNieuws"
		var table = document.createElement("table");
		table.setAttribute("id","tblNieuws")

		tbody = document.createElement("tbody");
		table.appendChild(tbody);
		getXml();

		document.getElementById("nieuws_database").appendChild(table);
	}

mijn xhtml code ziet er dan als volgt uit

Code:
<!-- het tekstvlak waar de XML database in een dynamische tabel wordt ingeladen -->
			<div id="tekstvlak_nieuws">
				<table border="0" cellpadding="0" cellspacing="0" class="opmaak_tabel_nieuws">
					<tr>
						<td class="opmaak_nieuws_header">
							Nieuws
						</td>
					</tr>
					
					<tr>
					<td>
						<div id="nieuws_database"></div>
					</td>
					</tr>
				</table>
			</div>

en de voorbeeld xmlfile zo...

Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<nieuws>
	<nieuwsitem>
		<datum_nieuwspost>1/06/05 -- 12:15</datum_nieuwspost>
		<nieuwspost>!!FINAL!!</nieuwspost>
	</nieuwsitem>
	<nieuwsitem>
		<datum_nieuwspost>28/05/05 -- 17:56</datum_nieuwspost>
		<nieuwspost>Content wordt aangepast en de site wordt uitvoerig getest op bugs.</nieuwspost>
	</nieuwsitem>
	<nieuwsitem>
		<datum_nieuwspost>17/05/05 -- 14:50</datum_nieuwspost>
		<nieuwspost>Site ontwerp volledig af. Alle inhoud wordt vandaag op de pagina's geplaatst.</nieuwspost>
	</nieuwsitem>
</nieuws>

[DZM]TheOne

Legacy Member
cross-browser opmaak van een xml bestand staat imho nog verre van op punt, veel te omslachtig
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan