powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / IE8. Некорректная XSLT
1 сообщений из 1, страница 1 из 1
IE8. Некорректная XSLT
    #37899699
ILL-JAH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В IE8 XSLT выводит только текст.
В Opera 12, Firefox 3.6.13 и Safari 5.1 всё норм.
Что я делаю не так? Подскажите пожалуйста.

songs.xml
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="songs.xslt"?>
<!DOCTYPE песни [
  <!ENTITY To "">
  <!ENTITY to "">
  <!ENTITY Be "Будь">
  <!ENTITY be "будь">
  <!ENTITY Or "Или">
  <!ENTITY or "или">
  <!ENTITY not "не">
  <!ENTITY Let "Будь со мной">
]>
<песни>
  <песня название="&To; &Be; &or; &not; &to; &be;" id="1">
    <припев>
      <строка>&To; &Be; &or; &not; &to; &be;</строка>
      <строка>Делай же что-ни&be;</строка>
    </припев>
    <куплет>
      <строка>&Let; мальчиком</строка>
      <строка>
        <ударение>Пу</ударение>шистым зайчиком
      </строка>
      <строка>Хрупкою деточкой</строка>
    </куплет>
    <куплет>
      <строка>&Let; мастером</строка>
      <строка>&Let; гангстреом</строка>
      <строка>Я буду девочкой</строка>
    </куплет>
    <куплет>
      <строка>&Let; праздником</строка>
      <строка>
        <ударение>Кну</ударение>том и пряником
      </строка>
      <строка>Самой большой бедой</строка>
    </куплет>
    <куплет>
      <строка>Это так просто</строка>
      <строка>
        Ты <удаоение>лю</удаоение>би и брось понты
      </строка>
      <строка>
        <съедая>Лю</съедая>бимая, &be; со мной
      </строка>
    </куплет>
    <рефрен>&Or; &not; &be; со мной</рефрен>
  </песня>
  
  <песня название="&Be; моей Му-Му" id="2">
    <куплет>
      <строка>Милая, нежная, сладкая малышка,</строка>
      <строка>Ты для меня как любимая книжка.</строка>
    </куплет>
    <припев>
      <строка>Я тебя возьму,</строка>
      <строка>Зачитаю, зацелую, залюблю.</строка>
      <строка>У-у-уууу!</строка>
      <строка>&Be;-&be;-&be; моей "Му-му"!</строка>
      <строка>&Be; моей "Войной и мир",</строка>
      <строка>Зачитаю я тебя до дыр.</строка>
      <строка>Тыр-тыр-быр,</строка>
      <строка>Дыры-мыры-мыры-дыр.</строка>
      <строка>Мыр-мыр.</строка>
    </припев>
    <куплет>
      <строка>Нежно страницы твои я листаю,</строка>
      <строка>Быть в них закладкой я страстно мечтаю.</строка>
    </куплет>
  </песня>
</песни>


songs.xslt
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:h="http://www.w3.org/1999/xhtml">
  <xsl:import href="stubs.xslt"/>
  <xsl:import href="song.xslt"/>
  <xsl:import href="couplet.xslt"/>
  <xsl:import href="refrain.xslt"/>
  <xsl:import href="final.xslt"/>
  <xsl:import href="line.xslt"/>
  <xsl:output method="xml" indent="yes"/>

    <xsl:template match="/"><!-- главный шаблон -->
      <h:html>
        <h:head>
          <h:link rel="stylesheet" type="text/css" href="songs.css"/>
          <h:title>Лучшие песни :-)</h:title>
        </h:head>
        <h:body>
          <h:table width="100%">
            <h:tr>
              <xsl:for-each select="песни/песня">
                <xsl:sort select="@id" order="descending"/>
                <xsl:variable name="n" select="position()"/>
                <h:td valign="top" align="center">
                  <h:div class="song">
                    <xsl:call-template name="song">
                      <xsl:with-param name="nsong" select="$n"/>
                    </xsl:call-template>
                  </h:div>
                </h:td>
              </xsl:for-each>
            </h:tr>
          </h:table>
        </h:body>
      </h:html>
    </xsl:template>
</xsl:stylesheet>


couplet.xslt
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:h="http://www.w3.org/1999/xhtml">
  <!-- Обработка куплета с рефреном -->
  <xsl:template match="куплет[../рефрен]">
    <h:div class="couplet">
      <xsl:apply-templates select="строка"/>
      <xsl:apply-templates select="../рефрен[1]"/>
      <xsl:if test="position()=last()">
        <h:br />
      </xsl:if>
      <xsl:apply-templates select="строка"/>
      <xsl:apply-templates select="../рефрен[1]"/>
    </h:div>
  </xsl:template>
  <!-- Обработка обычного куплета -->
  <xsl:template match="куплет">
    <h:div class="couplet">
      <xsl:apply-templates select="строка"/>
    </h:div>
  </xsl:template>
</xsl:stylesheet>


refrain.xslt
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:h="http://www.w3.org/1999/xhtml">
  <!-- Обработка припева с рефреном -->
    <xsl:template match="припев[../рефрен]">
      <h:div class="refrain">
        <xsl:apply-templates select="строка"/>
        <xsl:apply-templates select="строка[1]"/>
        <xsl:apply-templates select="строка[1]"/>
      </h:div>
    </xsl:template>
  <!-- обработка обычного припева -->
  <xsl:template match="припев">
    <h:div class="refrain">
      <xsl:apply-templates select="строка"/>
    </h:div>
  </xsl:template>
</xsl:stylesheet>


final.xslt
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:h="http://www.w3.org/1999/xhtml">
    <xsl:template name="final">
      <xsl:choose>
        <xsl:when test="@id=1">
          <!-- 6 раз повторить припев -->
          <xsl:apply-templates select="припев"/>
          <xsl:apply-templates select="припев"/>
          <xsl:apply-templates select="припев"/>
        </xsl:when>
        <xsl:when test="@id=2">
          <!-- 15 раз повторить припев -->
          <xsl:apply-templates select="припев"/>
          <xsl:apply-templates select="припев"/>
          <xsl:apply-templates select="припев"/>
          <xsl:apply-templates select="припев"/>
        </xsl:when>
      </xsl:choose>
    </xsl:template>
</xsl:stylesheet>


song.xslt
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:h="http://www.w3.org/1999/xhtml">
  <!-- Значение параметра n по умолчанию -->
  
  <xsl:template name="song" match="песня">
    <xsl:param name="nsong">0</xsl:param>

    <h:h2>Песня № <xsl:value-of select="$nsong"/>:
      <xsl:value-of select="./@название"/>
    </h:h2>
    <h:table>
      <xsl:for-each select="куплет">
        <h:tr>
          <h:th align="right" valign="top">Куплет</h:th>
          <h:td><xsl:apply-templates select="." /></h:td>
        </h:tr>
        <h:tr>
          <h:th align="right" valign="top">Припев</h:th>
          <h:td><xsl:apply-templates select="../припев"/></h:td>
        </h:tr>
      </xsl:for-each>
      <h:tr>
        <h:th align="right" valign="top">Конец</h:th>
        <h:td><xsl:call-template name="final"/></h:td>
      </h:tr>
    </h:table>
  </xsl:template>
</xsl:stylesheet>


line.xslt
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:h="http://www.w3.org/1999/xhtml">
    <xsl:template match="строка|рефрен">
      <h:div class="line">
        <xsl:value-of select="."/>
      </h:div>
    </xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / IE8. Некорректная XSLT
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]