Xpoint
   [напомнить пароль]

Странное отображение результата

Метки: [без меток]
2009-04-03 10:44:13 [обр] walek[досье]

Что-то в последнее время у меня много вопросов скопилось :-)

Совсем небольшой вопросик.
Есть XML вида:

<channel>
  <title>Заголовок</title>
    <description>Описание</description>
       <year>2009</year>
         <issueList>
      <issue intName="D09059" dateout="03.04.2009">059</issue>
      <issue intName="D09058" dateout="02.04.2009">058</issue>
           ...
         </issueList>
</channel>

В XSL вывожу простой список столбиком:

<?xml version="1.0" encoding="windows-1251" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" encoding="windows-1251"/>

<xsl:template match="issueList">
   <xsl:apply-templates select="issue" />
</xsl:template>

<xsl:template match="issue" >
   <xsl:value-of select="@intName" disable-output-escaping="yes" /><br />
</xsl:template>
</xsl:stylesheet>

Чертовщина какая-то, вроде бы делаю правильно, но в вслед списку выводится и
ЗаголовокОписание2009

Где я неправ?
Спасибо.

спустя 2 часа 54 минуты [обр] GRAy(64/259)[досье]
walek[досье] Ваше стремление сократить пример похвально ;). Но нельзя-же это делать ТАК радикально. Вы слишком сильно урезали ваш xsl. Мне думается там должно быть что-то ещё т.к. в таком виде он у меня вообще ничего не выводит, и определённо не демонстрирует поведения на которое вы жалуетесь.
спустя 1 час 4 минуты [обр] walek[досье]
GRAy[досье],
я действительно не урезал XSL.
Запостил в том виде, который есть.
Скоратил лишь XML.
спустя 10 минут [обр] GRAy(64/259)[досье]
walek[досье] Какой xslt процессор вы используете? У меня не выдаёт вообще ничего ни msxml ни xalan. Может быть какие-то особенные параметры вызова?
спустя 2 часа 52 минуты [обр] Lynn «Кофеман»(52/571)[досье]

walek[досье]
По моим представлениям "ЗаголовокОписание2009" у вас должно быть написано до списка.

Дело в том, что срабатывают шаблоны по умолчанию для узла channel, который вызывает xsl:apply-templates на всех детях, в том числе и на title, description и year.

Вам надо что-то типа такого:

<?xml version="1.0" encoding="windows-1251" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" encoding="windows-1251"/>

<xsl:template match="channel">
   <xsl:apply-templates select="issueList" />
</xsl:template>

<xsl:template match="issue" >
   <xsl:value-of select="@intName" disable-output-escaping="yes" /><br />
</xsl:template>
</xsl:stylesheet>
спустя 42 минуты [обр] GRAy(64/259)[досье]
Lynn «Кофеман»[досье] А у Вас хотя-бы что-нибудь выдал этот шаблон с этими входными данными?
спустя 5 часов [обр] Lynn «Кофеман»(52/571)[досье]
GRAy[досье]
Да.
tmp$ cat a.xml
<channel>
  <title>Заголовок</title>
    <description>Описание</description>
       <year>2009</year>
         <issueList>
      <issue intName="D09059" dateout="03.04.2009">059</issue>
      <issue intName="D09058" dateout="02.04.2009">058</issue>
         </issueList>
</channel>


tmp$ cat a.xsl
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" encoding="UTF-8"/>

<xsl:template match="issueList">
   <xsl:apply-templates select="issue" />
</xsl:template>

<xsl:template match="issue" >
   <xsl:value-of select="@intName" disable-output-escaping="yes" /><br />
</xsl:template>
</xsl:stylesheet>


tmp$ xsltproc a.xsl a.xml

  Заголовок
    Описание
       2009
         D09059<br>D09058<br>

tmp$
спустя 2 дня 9 часов [обр] walek[досье]
GRAy[досье]
MSXML 4.0
Lynn[досье]
Спасибо, буду учитывать!
спустя 13 минут [обр] GRAy(64/259)[досье]
Lynn «Кофеман»[досье] Точно, я забыл указать кодировку для a.xml.
Powered by POEM™ Engine Copyright © 2002-2005