Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вывод по условию данных из xml (https://javascript.ru/forum/misc/46216-vyvod-po-usloviyu-dannykh-iz-xml.html)

OblivionR 02.04.2014 10:31

Вывод по условию данных из xml
 
Доброго времени суток всем, пишу с таким вопросом.*( весь код, который есть прикреплю внизу).
Значит 1) есть xml файл с простой структурой актив\пассив баланса
2) html файл со скриптом который выводит данные из тегов в виде таблицы.
Задание вот какое есть форма :
<!DOCTYPE html>
<html lang="ru">

<title>9 задание XML</title>
<body>
<div id="main-block">
<div id="info">
Пассив / Актив: <input id="type" type="text"><p/>
Начало года > : &nbsp;<input id="year" type="text"><p/>
<input value="Узнать" type="button" onClick="get_info()">
</div>
</div>
<div id="result">
</div>
</body>
</html>

нужно внести условие к примеру *актив* > * 50 * и он выдаст часть таблицы со значениями удовлетворяющих условию.

код xml документа:
Код:

<?xml version="1.0" encoding="windows-1251"?>


<!-- File Name: Inventory.xml -->
<doc>
<active>

<rot>
<TITLE>vneoborot</TITLE>
<cod>190</cod>
<nachalgoda>12.1</nachalgoda>
<conecgoda>13.9</conecgoda>
</rot>

<rot>
<TITLE> oborot </TITLE>
<cod>290</cod>
<nachalgoda>87.9</nachalgoda>
<conecgoda>86.7</conecgoda>
</rot>

<rot>
<TITLE> balans</TITLE>
<cod>300</cod>
<nachalgoda>100</nachalgoda>
<conecgoda>100</conecgoda>
</rot>

</active>

<passive>

<rot>
<TITLE> капитал и резервы </TITLE>
<cod>490</cod>
<nachalgoda>21.3</nachalgoda>
<conecgoda>10.5</conecgoda>
</rot>

<rot>
<TITLE> долгосрочные обяз </TITLE>
<cod>590</cod>
<nachalgoda>3.9</nachalgoda>
<conecgoda>1.6</conecgoda>
</rot>

<rot>
<TITLE> краткосроч</TITLE>
<cod>690</cod>
<nachalgoda>74.8</nachalgoda>
<conecgoda>87.9</conecgoda>
</rot>

<balans>
<TITLE> баланс</TITLE>
<cod>700</cod>
<nachalgoda>100</nachalgoda>
<conecgoda>100</conecgoda>
</balans>

</passive>
</doc>

и код html документа со скриптом:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<table border=1 width=600xp>
<tr>
	<td width=345px bgcolor="red">Naivenov</td>
	<td width=70px bgcolor="red">COD</td>
	<td width=80px bgcolor="red">Na nachalo</td>
	<td bgcolor="red">NA konec</td>
</tr>
</table>

<script Type="text/javascript">


var xmlDocument=new ActiveXObject ("Microsoft.XMLDOM");
xmlDocument.load("fd.xml");
 var element=xmlDocument.documentElement; 
   
	document.writeln("<table border=1 width=600px>");
	document.writeln("<tr>");

	for (i=0; i<element.childNodes.length; i++)
	
	{ var curNode=element.childNodes.item(i);
       document.writeln("<tr>");
	   document.writeln("<td>"+curNode.nodeName+"</td>");
						
		
	for (j=0; j<curNode.childNodes.length; j++)

 
	{ 
	var Node=curNode.childNodes.item(j);
		
		 
		 document.writeln("<tr>");
		
		for (l=0; l<Node.childNodes.length; l++)
				
				{ var CurentNode=Node.childNodes.item(l);
				
					
					document.writeln("<td>"+CurentNode.text+"</td>");
						
							}
	}
	
	}
	
	
	
</script>
</head>
<body>

</body>
</html>



помогите пожалуйста:thanks:

kostyanet 02.04.2014 15:20

Цитата:

Сообщение от OblivionR
нужно внести условие к примеру *актив* > * 50 *

Гон. Актив состоит из двух, вас какое из двух интересует?

OblivionR 02.04.2014 16:38

я почти сделал задание, возникла сейчас проблема что он высчитывает что нужно но таблицу не выдает.
все у меня 4 файла 1) xml 2) xsl 3) html со криптом 4) библиотека

1)
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="2.xsl"?>
<doc>
	<active>

	<rott>
<TITLE>Внеоборотные активы</TITLE>
<cod>190</cod>
<nachalgoda>12.1</nachalgoda>
<conecgoda>13.9</conecgoda>
	</rott>

<rott>
<TITLE> Оборотные активы </TITLE>
<cod>290</cod>
<nachalgoda>87.9</nachalgoda>
<conecgoda>86.7</conecgoda>
</rott>

<rott>
<TITLE> Баланс</TITLE>
<cod>300</cod>
<nachalgoda>100</nachalgoda>
<conecgoda>100</conecgoda>
</rott>

</active>

<passive>

<rottt>
<TITLE> Капитал и резервы</TITLE>
<cod>490</cod>
<nachalgoda>21.3</nachalgoda>
<conecgoda>10.5</conecgoda>
</rottt>

<rottt>
<TITLE> Долгосрочные обязательства </TITLE>
<cod>590</cod>
<nachalgoda>3.9</nachalgoda>
<conecgoda>1.6</conecgoda>
</rottt>

<rottt>
<TITLE>Краткосрочные обязательства</TITLE>
<cod>690</cod>
<nachalgoda>74.8</nachalgoda>
<conecgoda>87.9</conecgoda>
</rottt>

<rottt>
<TITLE> Баланс </TITLE>
<cod>700</cod>
<nachalgoda>100</nachalgoda>
<conecgoda>100</conecgoda>
</rottt>

</passive>
</doc>


2)
?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <table border="2">
      <tr>
        <th>Наименование показателя </th>
		<th>Код строки </th>
		<th>На начало года</th>
		<th>На конец года</th>
      </tr>
	  <tr>
		<th>Актив</th>
	</tr>
      
	  <xsl:for-each select="doc/active/rott">
     <tr>
        <td><xsl:value-of select="TITLE"/></td>
		<td><xsl:value-of select="cod"/></td>
        <td><xsl:value-of select="nachalgoda"/></td>
		<td><xsl:value-of select="conecgoda"/></td>
		
      </tr>
	  </xsl:for-each>
	 
	  
	<tr>
		<th>Пассив</th>
	</tr>
	  <xsl:for-each select="doc/passive/rottt">
	   <tr>
        <td><xsl:value-of select="TITLE"/></td>
		<td><xsl:value-of select="cod"/></td>
        <td><xsl:value-of select="nachalgoda"/></td>
		<td><xsl:value-of select="conecgoda"/></td>
      </tr>
	  </xsl:for-each>
	 
	    
		</table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

3)
<!DOCTYPE html>
<html lang="ru">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="jquery-latest.js" type="text/javascript"></script>

<script type="text/javascript">
function get_info() {
var type = $("#type").val();
var year = new Number($("#year").val());
if(type == "" && year == "") {
alert("vvedite");
} else {
if(type == "active" ) {
var type = "rott";
} else if(type == "passive" ){
var type = "rottt";
} else {
alert("lox");
return false;
}
jQuery.ajax({
	type: "GET", 
	url: "bala.xml",
	dataType: "xml", 
	success: function(xml) {
	var check = 0;
	var result = "<table border=1 ><tr><th>hhfhfghf</th><th>fhfhfgh</th><th>hfghgfhfghf</th><th>fghfghfhh</th></tr>";
	jQuery(xml).find('' + type + '').each(function() {
		if($(this).find('nachalgoda').text() > year) {
			var TITLE = $(this).find('TITLE').text();
			var cod = $(this).find('cod').text();
			var nachalgoda = $(this).find('nachalgoda').text();
			var conecgoda = $(this).find('conecgoda').text();
			result = result + "<tr><td>" + TITLE + "</td><td>" + cod + "</td><td>" + nachalgoda + "</td><td>" + conecgoda + "</td></tr>";
			check = 1;
		}
	});
	result = result + "</table>";
	if(check == 1) {
	$("#main-block").hide();
	$("#result").show();
	var info = $("#result").html();
	$("#result").html(info + result);
	} else {
	alert("dannix net");
	}
}});}}

function close() {
	$("#result").hide();
	$("#main-block").show();
}
</script>
</head>
<body>
<div id="main-block">
<div id="info">
Passive\active: <input id="type" type="text"><p/>
Nachalgoda > : &nbsp;<input id="year" type="text"><p/>
<input value="Find" type="button" onClick="get_info()">
</div>
<div id="result">
<div id="close" ><a href="" onClick="close();"><b>X</b></a></div>
</div>

</body>
</html>


то есть в поле я вожу active\ passive во второе окно значение к примеру 90 и он должен выдать мне только строчку где в xml >90

kostyanet 02.04.2014 16:52

После этой вот фигни

xmlDocument.load("fd.xml");

у вас же имеется доступ к свойствам объекта, к связанным данным в общем? Или не имеется?

OblivionR 02.04.2014 17:01

это уже исправлено, весь код, который есть под комментарием)


Часовой пояс GMT +3, время: 09:53.