2015-05-18 3 views
-1

Я собрал этот пример из. Я новичок в xsl и пытаюсь понять, как он работает. Здесь xsl написан для сортировки президентов по их партии. Вот я предоставляю два xsl-файла i write.One работает (я имею в виду вывод вывода), а другой не работает (это означает, что на экран не выводится вывод/я называю его сломанным). Но оба файла не дали никаких ошибок. Может кто-нибудь объяснить мне, почему у сломанного файла xsl не было вывода?невинно выглядящий xsl-файл, действующий зло

XML файл:

<?xml version='1.0' encoding='UTF-8'?> 
<?xml-stylesheet type='text/xsl' href='party.xslt'?> 
<presidents > 
    <president> 
     <number>1</number> 
     <name>George Washington</name> 
     <birthday>1732-02-22</birthday> 
     <took_office>1789-04-30</took_office> 
     <left_office>1797-03-04</left_office> 
     <party>no party</party> 
     <term> 
      <term_number>1</term_number> 
      <vice_president>John Adams</vice_president> 
     </term> 
     <term> 
      <term_number>2</term_number> 
      <vice_president>John Adams</vice_president> 
     </term> 
    </president> 

    <president> 
     <number>2</number> 
     <name>Mr.X</name> 
     <birthday>1735-10-30</birthday> 
     <took_office>1797-03-04</took_office> 
     <left_office>1801-03-04</left_office> 
     <party>Federalist</party> 
     <term> 
      <term_number>3</term_number> 
      <vice_president>Thomas Jefferson</vice_president> 
     </term> 
    </president> 
    <president> 
     <number>2</number> 
     <name>John Adams</name> 
     <birthday>1735-10-30</birthday> 
     <took_office>1797-03-04</took_office> 
     <left_office>1801-03-04</left_office> 
     <party>Democratic</party> 
     <term> 
      <term_number>3</term_number> 
      <vice_president>Thomas Jefferson</vice_president> 
     </term> 
    </president> 
</presidents> 

XSL, которые не показывают результат:

<?xml version='1.0' encoding='UTF-8'?> 
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'> 
<xsl:template match='/'> 

    <html> 
     <body> 
     <h1>sorting presidents</h1> 
      <xsl:apply-templates select='presidents/president'> 
       <xsl:sort select='party' data-type='text'/> 
      </xsl:apply-templates> 
     </body> 
    </html> 

</xsl:template> 
<xsl:template match='presidents/president'> 

    <xsl:apply-templates select='name'/> 

</xsl:template> 
<xsl:template match='name'> 

    <span style='color:red;font-size:40px;'><xsl:value-of select='name'/></span><br/> 

</xsl:template> 


</xsl:stylesheet> 

XSL, который сделал шоу вывод:

<?xml version='1.0' encoding='UTF-8'?> 
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'> 
<xsl:template match='/'> 

    <html> 
     <body> 
     <h1>sorting presidents</h1> 
      <xsl:apply-templates select='presidents/president'> 
       <xsl:sort select='party' data-type='text'/> 
      </xsl:apply-templates> 
     </body> 
    </html> 

</xsl:template> 
<xsl:template match='presidents/president'> 

    <span style='color:red;font-size:40px;'><xsl:value-of select='name'/></span><br/> 

</xsl:template> 

</xsl:stylesheet> 

ответ

0

Там ничего зла здесь.

Посмотри на шаблоне сопоставления имени в неправильном XSLT:

<xsl:template match='name'> 
    <span style='color:red;font-size:40px;'><xsl:value-of select='name'/></span> 
    <br/> 

По использованию <xsl:value-of select='name'/>, вы предполагаете, у вас есть еще один <name> как потомок <name> в настоящее время согласованного , <xsl:value-of select='.'/> будет выдавать ожидаемый результат.

По сравнению с хорошей XSLT:

<xsl:template match='presidents/president'> 
    <span style='color:red;font-size:40px;'><xsl:value-of select='name'/></span> 
    <br/> 
</xsl:template> 

Вы сопрягать <president> и <xsl:value-of select='name'/> инструкция успешно извлечь <name> элемент в качестве дочернего <president>, что правая структура вашего XML.

+0

это базовый материал. Я должен был запомнить. Спасибо за ваш ответ :) –

Смежные вопросы