1. Program akwizycji danych z magistrali 1-wire generuje plik last.xml poniższej postaci:
<?xm</TEMPERATURES>
</DATA>l version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/css" href="last.css" ?>
<DATA>
 <PROGRAM NAME="LogTemp">
  <VERSION>2.25.0.97</VERSION>
  <TIMEZONE
```java
_BIAS_UTC>+0100</TIMEZONE_BIAS_UTC>
 </PROGRAM>
 <TEMPERATURES>
 <SENSOR ROMID="48000001B0584628">
  <NAME>Parter_JADALNIA</NAME>
  <VALUE>18.00</VALUE>
   <DATE>
    <YEAR>2012</YEAR>
    <MONTH>11</MONTH>
    <DAY>24</DAY>
   </DATE>
   <TIME>
    <HOUR>6</HOUR>
    <MIN>41</MIN>
    <SEC>30</SEC>
   </TIME>
  <AVERAGE>18.20</AVERAGE>
 </SENSOR>
 <SENSOR ROMID="8A00000165D7AC28">
  <NAME>Parter_SRODEK</NAME>
  <VALUE>21.50</VALUE>
   <DATE>
    <YEAR>2012</YEAR>
    <MONTH>11</MONTH>
    <DAY>24</DAY>
   </DATE>
   <TIME>
    <HOUR>6</HOUR>
    <MIN>41</MIN>
    <SEC>28</SEC>
   </TIME>
  <AVERAGE>21.63</AVERAGE>
 </SENSOR>
</TEMPERATURES>
</DATA>

Dla uproszczenia zamiesczono jedynie dwa elementy <SENSOR> </SENSOR> o numerach identyfikacyjnych postaci ROMID="F3000001B293E028".

  1. Poniższy JAVA skrypt

<!-- Begin piwnica script -->
	var xmlDoc
	window.onload=function(){
// code for IE
	if(window.ActiveXObject) {
  	xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  	xmlDoc.async=false;
  	xmlDoc.load('last.xml');
  	getTable()
}
// code for Firefox
	else {
	if(document.implementation &&document.implementation.createDocument) 
 	try{//--- this is for FF, opera and others.
 	xmlDoc= document.implementation.createDocument("","",null);
 	xmlDoc.load('last.xml');
 	xmlDoc.onload=getTable;
}
	catch(e){// if the other one fails enters here for Safari   
        xmlDoc = new XMLHttpRequest();                       
        xmlDoc.open("GET", 'last.xml', false);                        
        xmlDoc.send();                        
        xmlDoc=xmlDoc.responseXML; 
        parsearXML(); 

}
	else {
  	alert('Your browser cannot handle this script');

   }
  }
 }
  	
	function getTable(){

  	var nme=xmlDoc.getElementsByTagName("NAME");
  	var vle=xmlDoc.getElementsByTagName("VALUE");
  	var yea=xmlDoc.getElementsByTagName("YEAR");
  	var mth=xmlDoc.getElementsByTagName("MONTH");
  	var day=xmlDoc.getElementsByTagName("DAY");
  	var hor=xmlDoc.getElementsByTagName("HOUR");
  	var min=xmlDoc.getElementsByTagName("MIN");
  	var sec=xmlDoc.getElementsByTagName("SEC");
	var aver=xmlDoc.getElementsByTagName("AVERAGE");


	for(c=0;c<nme.length;c++) {
   	document.getElementById("nme").innerHTML+='<div class="box1">'+nme[c].firstChild.nodeValue+'<\/div>';
   	document.getElementById("vle").innerHTML+='<div class="box1">'+vle[c].firstChild.nodeValue+'<\/div>';

   	document.getElementById("yea").innerHTML+='<div class="box1">'+yea[c].firstChild.nodeValue+'/'+mth[c].firstChild.nodeValue+'/'+day[c].firstChild.nodeValue+'<\/div>';
   	document.getElementById("time").innerHTML+='<div class="box1">'+hor[c].firstChild.nodeValue+':'+min[c].firstChild.nodeValue+':' +sec[c].firstChild.nodeValue+'<\/div>';
	document.getElementById("aver").innerHTML+='<div class="box1">'+aver[c].firstChild.nodeValue+'<\/div>';
  }


// Piwnica_CO
  	document.getElementById("vle8").innerHTML+='<div class="box2">'+vle[7].firstChild.nodeValue+'<\/div>'; 
// Piwnica_SERWERY
  	document.getElementById("vle9").innerHTML+='<div class="box2">'+vle[8].firstChild.nodeValue+'<\/div>';
// Piwnica_SYPIALNIA
  	document.getElementById("vle10").innerHTML+='<div class="box2">'+vle[9].firstChild.nodeValue+'<\/div>';
// Piwnica_WEJSCIE
  document.getElementById("vle11").innerHTML+='<div class="box2">'+vle[10].firstChild.nodeValue+'<\/div>';


// Temp_ ZEWN
  	document.getElementById("vle12").innerHTML+='<div class="box2">'+vle[11].firstChild.nodeValue+'<\/div>';

 }
<!-- End tabel script -->
 

wypisuje na stronie html poszczególne elementy w tabeli oraz generuje jedno-elementowe tabele z wartościami pomiarow na rzucie kondygnacji w miejscach dokonywania pomiarów.

za to odpowiada niniejszy fragment kodu html:


<!-- Begin tabela pomiaru -->
<table id="thetable">
<thead>
<tr>
<th>Name</th>
<th>[°C]</th>
<th>rrrr/mm/dd</th>
<th>Time</th>
<th>Avr.[°C]</th>
</tr>
</thead>
<tr>
<td id="nme"></td>
<td id="vle"></td>
<td id="yea"></td>
<td id="time"></td>
<td id="aver"></td>
</tr>
</table>

<!-- End tabela pomiaru -->

<!-- Begin Piwnica_CO -->
<table id="thetable8">
<tr>
<td id="vle8"></td>
</tr>
</table>
<!-- End Piwnica_CO -->

<!-- Begin Piwnica_SERWERY -->
<table id="thetable9">
<tr>
<td id="vle9"></td>
</tr>
</table>
<!-- End Piwnica_SERWERY -->

<!-- Begin Piwnica_SYPIALNIA -->
<table id="thetable10">
<tr>
<td id="vle10"></td>
</tr>
</table>
<!-- End Piwnica_SYPIALNIA -->

<!-- Begin Piwnica_WEJSCIE -->
<table id="thetable11">
<tr>
<td id="vle11"></td>ostać plik last.xml :
```java
</tr>
</table>
<!-- End Piwnica_WEJSCIE -->

<!-- Begin Temp_ZEWN -->
<table id="thetable12">
<tr>
<td id="vle12"></td>
</tr>
</table>
<!-- End Temp_ZEWN -->

I wszystko było by OK! gdynie nie to, że to jest bardzo ograniczona postać pliku xml.
Po rozserzeniu elemenu pliku <TEMPERATURES> </TEMPERATURES> do poniższej postaci:
3. Rozszerzona postać plik last.xml :


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="css/pomiary.xsl" ?>
<DATA>
 <PROGRAM NAME="LogTemp">
  <VERSION>2.25.0.97</VERSION>
  <TIMEZONE_BIAS_UTC>+0100</TIMEZONE_BIAS_UTC>
 </PROGRAM>
 
 <ALARMS>
  <TEMPERATURES>
  </TEMPERATURES>
 </ALARMS>
 
 <TEMPERATURES>
 <SENSOR ROMID="48000001B0584628">
  <NAME>Parter_JADALNIA</NAME>
  <VALUE>17.50</VALUE>
   <DATE>
    <YEAR>2013</YEAR>
    <MONTH>2</MONTH>
    <DAY>3</DAY>
   </DATE>
   <TIME>
    <HOUR>16</HOUR>
    <MIN>56</MIN>
    <SEC>30</SEC>
   </TIME>
  <AVERAGE>16.18</AVERAGE>19.50

  <MINH24>
   <VALUE>14.50</VALUE>
    <DATE>
     <YEAR>2013</YEAR>
     <MONTH>2</MONTH>
     <DAY>3</DAY>
    </DATE>
    <TIME>
     <HOUR>2</HOUR>
     <MIN>43</MIN>
     <SEC>43</SEC>
    </TIME>
  </MINH24>

  <MAXH24>
   <VALUE>17.50</VALUE>
    <DATE>
     <YEAR>2013</YEAR>
     <MONTH>2</MONTH>
     <DAY>3</DAY>
    </DATE>
    <TIME>
     <HOUR>16</HOUR>
     <MIN>56</MIN>
     <SEC>30</SEC>
    </TIME>
  </MAXH24>
  
  <MIN>
   <VALUE>14.00</VALUE>
   <DATE>
    <YEAR>2013</YEAR>
    <MONTH>1</MONTH>
    <DAY>22</DAY>
   </DATE>
   <TIME>
    <HOUR>22</HOUR>
    <MIN>8</MIN>
    <SEC>34</SEC>
   </TIME>
  </MIN>

  <MAX>
   <VALUE>19.00</VALUE>
   <DATE>
    <YEAR>2013</YEAR>
    <MONTH>1</MONTH>
    <DAY>8</DAY>
   </DATE>
   <TIME>
    <HOUR>22</HOUR>
    <MIN>37</MIN>
    <SEC>54</SEC>
   </TIME>
  </MAX>

   <ALARMS/>
  <UNITS>Celsius</UNITS>
  <TYPE>DS18B20</TYPE>
  <CONFIG/>
 </SENSOR>
</TEMPERATURES>
</DATA>

Dl uproszczenia, ze względu na rozwlekłość, plik zawiera tylko jeden element <SENSOR ROMID="48000001B0584628">.
Jak widać w pliku danych xml dochodzi do zagnieżdżenia elementów potomnych typu <DAY></DAY>, <VALUE></VALUE>,<HOUR></HOUR>,<MIN>43</MIN>,<SEC>43</SEC>, w wyniku czego skrypt generuje błędne wyniki. Co zrobić, żeby skrypt po przeczytaniu poniższego fragmentu

<NAME>Parter_JADALNIA</NAME>
  <VALUE>17.50</VALUE>
   <DATE>
    <YEAR>2013</YEAR>
    <MONTH>2</MONTH>
    <DAY>3</DAY>
   </DATE>
   <TIME>
    <HOUR>16</HOUR>
    <MIN>56</MIN>
    <SEC>30</SEC>
   </TIME>
  <AVERAGE>16.18</AVERAGE>19.50

zignorował wczytywanie pozostałych elementów potomnych o tych samych nazwach?