Показать сообщение отдельно
  #1 (permalink)  
Старый 23.02.2012, 03:01
Новичок на форуме
Отправить личное сообщение для Аркадий Посмотреть профиль Найти все сообщения от Аркадий
 
Регистрация: 23.02.2012
Сообщений: 3

javasсript и xpath
Задраивается прошу Вас помочь мне пожалуйста есть два xml файла к примеру.
1
Код:
<?xml version="1.0" encoding="utf-8"?>
<links>
  <link>Тип1</link>
  <link>Тип2</link>
</links>
2
Код:
<?xml version="1.0" encoding="utf-8"?>
<links>
  <link>
     <tip>Тип1</tip>
     <kat>Категория</kat>
  </link>
  <link>
     <tip>Тип1</tip>
     <kat>Категория1</kat>
  </link>
  <link>
      <tip>Тип2</tip>
     <kat>Категория2</kat>
  </link>
</links>
javasсript-отм данные вытягиваю в два selectа все вроде получается до этого момента. Задача такова надо при выборе первого selectа данные во втором менялись в зависимости что выбрали.
У меня получилось вроде все но вот ни как не могу в xpath передать переменную или функцию javasсript
Вот как я сделал
function val1() {
	d = document.getElementById("select_id").value;
        return d;
}

function loadXMLDoc(dname) {
	if (window.XMLHttpRequest) {
		xhttp = new XMLHttpRequest();
	} else {
		xhttp = new ActiveXObject("Microsoft.XMLHTTP");
	}
	xhttp.open("GET", dname, false);
	xhttp.send("");
	return xhttp.responseXML;
}

xml = loadXMLDoc("sam.xml");
path = "/links/link"
	
xml1 = loadXMLDoc(".sam1.xml");
path1 = "/links/link[tip='?????']/kat"
	
	// CODE FOR IE
	if (window.ActiveXObject) {
		var nodes = xml.selectNodes(path);
		document.write("<table><tr><td>Тип:<br /><select name='tip'><option value=''></option>");
		for (i = 0; i < nodes.length; i++) {
			document.write("<option value='" + nodes[i].childNodes[0].nodeValue + "' >" + nodes[i].childNodes[0].nodeValue + "</option>");
		}
		document.write("</select></td>");
		var nodes = xml1.selectNodes(path1);
		document.write("<td>Тип:<br /><select name='tip'><option value=''></option>");
		for (i = 0; i < nodes.length; i++) {
			document.write("<option value='' >" + nodes[i].childNodes[0].nodeValue + "</option>");
		}
		document.write("</select></td></tr></table>");
	}
	
	// CODE FOR MOZILLA, FIREFOX, OPERA, ETC.
	else if (document.implementation && document.implementation.createDocument) {
		var nodes = xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
		var result = nodes.iterateNext();
		document.write("<form method='post' action='add3.php'><table><tr><td>Тип:<br /><select onchange='val1()' id='select_id' name='tip'><option value=''></option>");
		while (result) {
			document.write("<option value='" + result.childNodes[0].nodeValue + "' >" + result.childNodes[0].nodeValue + "</option>");
			result = nodes.iterateNext();
		}
		document.write("</select></td>");
		
		var nodes = xml1.evaluate(path1, xml1, null, XPathResult.ANY_TYPE, null);
		
		var result = nodes.iterateNext();
		document.write("<td>Услуги:<br /><select name='usluga'><option value=''></option>");
		while (result) {
			document.write("<option value='' >" + result.childNodes[0].nodeValue + "</option>");
			document.write("<br />");
			result = nodes.iterateNext();
		}
		document.write("</select></td><td><input type='submit' name='submit' value='Добавить'></td></tr></table></form>");
	}

Помогите пожалуйста уже неделю мучаюсь ни как не получаеться
Ответить с цитированием