Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Вёрстка веб-сайтов > XML XSL и Слой в HTML


Автор: Alix36 16.1.2009, 23:48
Есть 3 файла
1) ch.xml - файл содержащий информацию
Код

<?xml-stylesheet type="text/xsl" href="ch.xsl" version="1.0" encoding="UTF-8" ?>
<root>
<char id="1" >etc</char>
<char id="1" >etc</char>
</root>

2)ch.xsl 
Таблица стиля. 
Код

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="utf-8"/>
<xsl:template match="/">
<xsl:for-each select="/root/char" > 
      <xsl:value-of select="text()" />
       <br />
      </xsl:for-each>
</xsl:template>
</xsl:stylesheet>

3) ch.html 
В котором есть div id=user
Скрипт:
Код

function requsr() {
            var oXmlHttp = zXmlHttp.createRequest();
            oXmlHttp.open("get", "ch.xsl", true);
            oXmlHttp.onreadystatechange = function () {
                if (oXmlHttp.readyState == 4) {
                    if (oXmlHttp.status == 200) {
                        disusr(oXmlHttp.responseText);
                    } else {
                        disusr("An error occurred: " + oXmlHttp.statusText); //statusText is not always accurate
                    }
                }
            };
            oXmlHttp.send(null);
        }
        function disusr(sText) {
            var user = document.getElementById("user");
            user.innerHTML = sText;
        }

*Скрипт работает*

И все как-бы хорошо, но в слой попадает чистый xml без применения ch.xsl.

Как исправить?

Автор: ShurikA 17.1.2009, 00:46
Когда ты уже внутри "/" в <xsl:for-each select=... нужно обращаться без первого слеша.

Попробуй так:
Код

<xsl:for-each select="root/char" > 

Автор: ShurikA 17.1.2009, 01:35
или лучше всего если template будет искать корень:
Код

<xsl:template match="root">


a for-each уже сами элементы:
Код

<xsl:for-each select="char" > 
...


Автор: Alix36 17.1.2009, 12:20
если вызвать просто XML, он покажет его с применением xsl
А если через слой, то нет....

Автор: Alix36 17.1.2009, 13:00
проверил, xsl тут вовсе не причем, даже если xsl содержит откровенные ошибки, или если xsl верен, но не должен ничего выводить, резльтат один и тот же....

Проблема в том, что XSL не применяется к XML перед передачей её в Слой.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)