Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.02.2016, 10:13
Кандидат Javascript-наук
Отправить личное сообщение для leon2009sp Посмотреть профиль Найти все сообщения от leon2009sp
 
Регистрация: 22.12.2015
Сообщений: 106

чтение xml без жкуиерити
Здравствуйте! можно простой примерчик чтение файла xml;
Код:
<?xml version="1.0" encoding="utf-8"?>
<category>
    <book name="kat1">
        <page name="111.php">data1</page>
        <page name="222.php">data2</page>
        <page name="333.php">data3</page>
        <page name="444.php">data4</page>
    </book>
    <book name="kat2">
        <page name="111.php">data5</page>
        <page name="222.php">data6</page>
        <page name="333.php">data7</page>
        <page name="444.php">data8</page>
    </book>
</category>
чтобы можно было бы запихнуть в select box
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml " lang="en" xml:lang="en">
<head>
  <title>dinamic select</title>
  <meta http-equiv="Content-type" content="text/html; charset=windows-1251" />
  <meta http-equiv="Content-Language" content="ru-ru" />
<style type="text/css">
* { margin: 0; padding: 0; }
#main { position: relative; left: 100px; top: 100px; }
</style>
<script type="text/javascript"><!--
var mv = new Array();
mv[0] = Array('выберите город');
mv[1] = Array('111','Белорусский','Казанский','Киевский','Курский','Октябрьский','Павелецкий','Рижский','Савеловский','Ярославский');
mv[2] = Array('222','Балтийский','Варшавский','Витебский','Ладожский','Московский','Финляндский');
function changetown() {
    var val1 = parseInt(document.forms[0].city.value); 
    mva = mv[val1];
    recity(); }
function recity() {
    var sselect = document.forms[0].vokzal;
    for(i = sselect.length; i > 0; i--) { sselect.options[i] = null; } 
    opt = new Array; 
    for(i = 0; i < mva.length; i++) { sselect.options[i] = new Option(mva[i], (i)); }}
//-->
</script>
</head>
<body><div id="main">
<form>
<select name="city" onchange="changetown();">
<option value="0"></option>
<option value="1">Москва</option>
<option value="2">Санкт-Петербург</option>
</select>
<select name="vokzal"><option>выберите город</option></select>
</form>
</div>
</body></html>
Ответить с цитированием
  #2 (permalink)  
Старый 22.02.2016, 11:14
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

Сообщение от leon2009sp Посмотреть сообщение
Здравствуйте! можно простой примерчик чтение файла xml;
Код:
<?xml version="1.0" encoding="utf-8"?>
<category>
    <book name="kat1">
        <page name="111.php">data1</page>
        <page name="222.php">data2</page>
        <page name="333.php">data3</page>
        <page name="444.php">data4</page>
    </book>
    <book name="kat2">
        <page name="111.php">data5</page>
        <page name="222.php">data6</page>
        <page name="333.php">data7</page>
        <page name="444.php">data8</page>
    </book>
</category>
xPath, XSLT ну или просто навигация по DOM.
<?xml version="1.0" encoding="utf-8"?>
<category>
    <book name="kat1">
        <page name="111.php">data1</page>
        <page name="222.php">data2</page>
        <page name="333.php">data3</page>
        <page name="444.php">data4</page>
    </book>
    <book name="kat2">
        <page name="111.php">data5</page>
        <page name="222.php">data6</page>
        <page name="333.php">data7</page>
        <page name="444.php">data8</page>
    </book>
</category>

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:template match="/">
        <html>
            <body>
                <xsl:for-each select="category/book">
                        <ul>
                          <xsl:value-of select="@name"/>
                          <xsl:for-each select="page">
                              <li>
                                <xsl:value-of select="." />
                              </li>
                          </xsl:for-each>
                        </ul>
                </xsl:for-each> 
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Документ без названия</title>
<style>
    li{
        padding-left : 20px;
        list-style-type : none;
    }
</style>
<script>
    function loadXMLDoc(filename) {
        if (window.ActiveXObject) {
            xhttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        else {
            xhttp = new XMLHttpRequest();
        }
        xhttp.open("GET", filename, false);
        try { xhttp.responseType = "msxml-document" } catch (err) { } // Helping IE11
        xhttp.send("");
        return xhttp.responseXML;
    }
    function displayResult() {
        xml = loadXMLDoc("testXML.xml");
        xsl = loadXMLDoc("testXSL.xsl");
        // code for IE
        if (window.ActiveXObject || xhttp.responseType == "msxml-document") {
            ex = xml.transformNode(xsl);
            document.getElementById("example").innerHTML = ex;
        }
        // code for Chrome, Firefox, Opera
        else if (document.implementation && document.implementation.createDocument) {
            xsltProcessor = new XSLTProcessor();
            xsltProcessor.importStylesheet(xsl);
            resultDocument = xsltProcessor.transformToFragment(xml, document);
            document.getElementById("example").appendChild(resultDocument);
        }
    }
</script>
</head>
<body onload="displayResult()">
    <div id="example" />
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 23.02.2016, 12:28
Кандидат Javascript-наук
Отправить личное сообщение для leon2009sp Посмотреть профиль Найти все сообщения от leon2009sp
 
Регистрация: 22.12.2015
Сообщений: 106

что получилось
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:template match="/">	
        <html>
            <body><select><option>
                <xsl:for-each select="category/book">
                        <ul>
                          <xsl:value-of select="@name"/>
                          <xsl:for-each select="page">
                              <li>
                                <xsl:value-of select="." />				
				 </li>
                          </xsl:for-each>
                      </ul>
                </xsl:for-each> 
           </option>  </select> </body>
        </html>		
    </xsl:template>
</xsl:stylesheet>

я же правильно делаю? все изменение в xls файле?
Ответить с цитированием
  #4 (permalink)  
Старый 23.02.2016, 12:38
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

leon2009sp,
Смотря что именно вы хотите сделать. Я использовал неупорядоченный список просто для примера. Если надо в select засунуть все данные из тэгов <page> то надо так
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:template match="/">	
        <html>
            <body><select>
                <xsl:for-each select="category/book/page">
                        <option>
                            <xsl:value-of select="." />	
						</option>	
                 </xsl:for-each>
            </select></body>
        </html>		
    </xsl:template>
</xsl:stylesheet>


Ещё больше инфы тут http://htmlweb.ru/xml/xslt1.php
Ответить с цитированием
  #5 (permalink)  
Старый 23.02.2016, 15:55
Кандидат Javascript-наук
Отправить личное сообщение для leon2009sp Посмотреть профиль Найти все сообщения от leon2009sp
 
Регистрация: 22.12.2015
Сообщений: 106

select box как менять данные
пример в select1 висит book, а в select2 при выборе значение data1 появляются book2->page
а если выбрать data2 то в select2 появится book3 и
Код:
<?xml version="1.0" encoding="utf-8"?>
<category>
    <book name="---kat1---">
        <page name="111.php" value=1>data1</page>
        <page name="222.php" value=2>data2</page>
        <page name="333.php" value=3>data3</page>
        <page name="444.php" value=4>data4</page>
    </book>
    <book2 name="kat2">
        <page2 name="111.php" value=5>data5</page>
        <page2 name="222.php" value=6>data6</page>
        <page2 name="333.php" value=7>data7</page>
        <page2 name="444.php" value=8>data8</page>
    </book2>
    <book3 name="kat3">
        <page3 name="111.php" value=9>data9</page>
        <page3 name="222.php" value=10>data10</page>
        <page3 name="333.php" value=11>data11</page>
        <page3 name="444.php" value=12>data12</page>
    </book3>
</category>
и передача value
Код:
<xsl:value-of select="@value"/>
???
спасибо!
Ответить с цитированием
  #6 (permalink)  
Старый 23.02.2016, 16:23
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

leon2009sp,
лучше на HTML показать, что именно хочется. Да и в xml если есть открывающий тэг, то обязательно должен быть закрывающий. Такие записи
<page2 name="111.php" value=5>data5</page>
неправильны.
Ответить с цитированием
  #7 (permalink)  
Старый 24.02.2016, 05:31
Кандидат Javascript-наук
Отправить личное сообщение для leon2009sp Посмотреть профиль Найти все сообщения от leon2009sp
 
Регистрация: 22.12.2015
Сообщений: 106

select box как менять данные
попробую объяснить
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml " lang="en" xml:lang="en">
<head>
  <title>dinamic select</title>
  <meta http-equiv="Content-type" content="text/html; charset=windows-1251" />
  <meta http-equiv="Content-Language" content="ru-ru" />
<style type="text/css">
* { margin: 0; padding: 0; }
#main { position: relative; left: 100px; top: 100px; }
</style>
<script type="text/javascript"><!--
var mv = new Array();
mv[0] = Array('выберите город');
mv[1] = Array('111','Белорусский','Казанский','Киевский','Курский','Октябрьский','Павелецкий','Рижский','Савеловский','Ярославский');
mv[2] = Array('222','Балтийский','Варшавский','Витебский','Ладожский','Московский','Финляндский');
function changetown() {
    var val1 = parseInt(document.forms[0].city.value); 
    mva = mv[val1];
    recity(); }
function recity() {
    var sselect = document.forms[0].vokzal;
    for(i = sselect.length; i > 0; i--) { sselect.options[i] = null; } 
    opt = new Array; 
    for(i = 0; i < mva.length; i++) { sselect.options[i] = new Option(mva[i], (i)); }}
//-->
</script>
</head>
<body><div id="main">
<form>
<select name="city" onchange="changetown();">
<option value="0"></option>
<option value="1">Москва</option>
<option value="2">Санкт-Петербург</option>
</select>
<select name="vokzal"><option>выберите город</option></select>
</form>
</div>
</body></html>

только данные нужно брать из xml
Код:
mv[0] = Array('выберите город');
mv[1] = Array('111','Белорусский','Казанский','Киевский','Курский','Октябрьский','Павелецкий','Рижский','Савеловский','Ярославский');
mv[2] = Array('222','Балтийский','Варшавский','Витебский','Ладожский','Московский','Финляндский');
Ответить с цитированием
  #8 (permalink)  
Старый 24.02.2016, 05:35
Кандидат Javascript-наук
Отправить личное сообщение для leon2009sp Посмотреть профиль Найти все сообщения от leon2009sp
 
Регистрация: 22.12.2015
Сообщений: 106

<?xml version="1.0" encoding="utf-8"?>
<category>
    <book name="kat2">
<page2 name="111.php" value=1>data1</page2>
<page2 name="111.php" value=2>data2</page2>
    </book>
</category>
?>

такая запись правельна? закрытие xml ?>

Последний раз редактировалось leon2009sp, 24.02.2016 в 05:36. Причина: добавка 2
Ответить с цитированием
  #9 (permalink)  
Старый 24.02.2016, 09:45
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

leon2009sp,
Если нужна динамика, то тогда надо использовать навигацию по DOM дереву.

testXML.xml
<?xml version="1.0" encoding="utf-8"?>
<category>
    <city name="Москва">
		<station>Белорусский</station>
		<station>Казанский</station>
		<station>Киевский</station>
		<station>Курский</station>
		<station>Октябрьский</station>
		<station>Павелецкий</station>
		<station>Рижский</station>
		<station>Савеловский</station>
		<station>Ярославский</station>
	</city>
	<city name="Санкт-Петербург">
		<station>Балтийский</station>
		<station>Варшавский</station>
		<station>Витебский</station>
		<station>Ладожский</station>
		<station>Московский</station>
		<station>Финляндский</station>
	</city>
</category>


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Документ без названия</title>
<style>
    #station{
        margin-left : 150px;
    }
</style>
<script>
    function loadXMLDoc(filename) {
        if (window.ActiveXObject) {
            xhttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        else {
            xhttp = new XMLHttpRequest();
        }
        xhttp.open("GET", filename, false);
        try { xhttp.responseType = "msxml-document" } catch (err) { } // Helping IE11
        xhttp.send(null);
        return xhttp.responseXML;
    }
    document.addEventListener('DOMContentLoaded', function () {
        var xml = loadXMLDoc("testXML.xml"),
            selCity = document.querySelector('#city'),
            selStation = document.querySelector('#station'),
            i;
        [].forEach.call(xml.querySelectorAll('city'), function (el) {
            selCity.add(new Option(el.getAttribute('name'), el.getAttribute('name')))
        })
        selCity.addEventListener('change', function () {
            selStation.options.length = 0 , i=0;
            [].forEach.call(xml.querySelectorAll('city[name=' + this.value + '] > station'), function (el) {
                selStation.add(new Option(el.textContent, ++i));
            })
        })
    })
</script>
</head>
<body>
    <select id="city"><option selected>Выберите город</option></select>
    <select id="station"></select>
</body>
</html>


http://pixs.ru/showimage/showpng_8266993_20819220.png
Ответить с цитированием
  #10 (permalink)  
Старый 05.03.2016, 11:02
Кандидат Javascript-наук
Отправить личное сообщение для leon2009sp Посмотреть профиль Найти все сообщения от leon2009sp
 
Регистрация: 22.12.2015
Сообщений: 106

а почему не сработало с с дивом?
<body>
    <select id="city"><option selected>Выберите город</option></select>
    <div id="station"></div>
</body>

с инпутом тоже не выводит
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Читать xml файл без расширения modelka Серверные языки и технологии 2 19.03.2015 13:38
Чтение xml средствами JavaScript pers_tmb Общие вопросы Javascript 9 12.03.2014 18:26
Как загрузить xml из вышележащей директории без обращения к серверу? Parez Общие вопросы Javascript 11 06.05.2011 22:45
как правильно прочесть xml без подключения jQuery BorodinKO Общие вопросы Javascript 1 03.04.2011 23:23
Поиск и чтение атрибутов в XML Armen Общие вопросы Javascript 4 12.03.2011 22:20