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


Автор: BOB4uK 6.5.2007, 07:31
Не могу понять в чем касяк... smile 
Написал простенький xml файл...
Написал простенький xsl файл...
Выводит толька оформление, а данные не выводит...
В чем проблема? Не могу понять!
XML:
------------------------------------------------------------------------------------------
<?xml version="1.0"?>
<?cocoon-process type="xslt"?> 
<?xml-stylesheet type="text/xsl" href="lab1.xsl"?>
<MyBlog>    
    <Avtor>Smirnov Vladimir Sergeevich</Avtor>
    <Messages>
        <Message date="10.04.2007">One Message...</Message>
        <Message date="11.05.2008">Two Message...</Message>
        <Message date="12.06.2009">Three Message...</Message>                
    </Messages>        
</MyBlog>
------------------------------------------------------------------------------------------

XSL:
------------------------------------------------------------------------------------------
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transformation">
<xsl:processing-instruction name="cocoon-format">
type="text/html"</xsl:processing-instruction>
<xsl:template match="MyBlog">
  <html>  
    <body>
      <table align="center" border="1">
        <tr><td colspan="3">
            
            <xsl:template match="Avtor">
                <h1>Avtor: <xsl:value-of select="Avtor/text()"/></h1>
            </xsl:template>
        </td></tr>
        <xsl:template match="Messages">
            <tr>
                <td>N</td><td>Date</td><td>Message</td>                
            </tr>            
            <xsl:for-each select="Message">
                <tr>
                    <td>
                        <xsl:value-of select="position()"/>
                    </td>
                    <td>
                        <xsl:value-of select="@date"/>
                    </td>
                    <td>
                        <xsl:apply-templates/>
                    </td>                
                </tr>    
            </xsl:for-each>
        </xsl:template>    
      </table>    
    </body>
  </html>
</xsl:template>
</xsl:stylesheet>
------------------------------------------------------------------------------------------

Автор: JVM 7.5.2007, 09:58
Поучите основы xsl. Например в вашем коде есть вложенные шаблоны xsl:template - такого в xsl нет
Код

<xsl:processing-instruction name="cocoon-format">
type="text/html"</xsl:processing-instruction>
<xsl:template match="MyBlog">
  <html>  
    <body>
      <table align="center" border="1">
        <tr><td colspan="3">
            
            <xsl:template match="Avtor">
                <h1>Avtor: <xsl:value-of select="Avtor/text()"/></h1>
            </xsl:template>

Начинать с Cocoon'а
Код

<xsl:processing-instruction name="cocoon-format">
не лучший вариант - вообще запутаетесь и XML(и в частности XSL) станет противен.

Автор: BOB4uK 7.5.2007, 17:21
Спасибо огроменное! Пока носом не ткнули и не увидел!
Теперь понял свою ошибку...
А еще сам нашел...
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transformation">
Это не правильно!
Надо так:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Вот толька у меня еще один вопрос...
Как сделать что бы выводился русский текст?
Я устанавливаю так:
<?xml version="1.0" encoding="utf-8"?>
Правильно?

Автор: Exception 7.5.2007, 17:43
BOB4uK, используйте подсветку кода!


Цитата(BOB4uK @  7.5.2007,  18:21 Найти цитируемый пост)
<?xml version="1.0" encoding="utf-8"?>


Юникод вообще желательно использовать при работе с XML. Всё правильно.

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