2016-10-19 4 views
0

Привет, я довольно новичок в использовании XSLT (без использования xsl: for-each, который может быть виновником), и я столкнулся с проблемой, пытаясь получить сортировку для элемента вечеринки чтобы функционировать должным образом.с использованием <xsl: sort не работает с назначенным элементом

У меня есть документ XML, содержащий:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="president_table_PROBz.xsl"?> 

     <presidents xmlnsxsi="http//www.w3.org/2001/XMLSchema-instance" 
      xsinoNamespaceSchemaLocation="http//www.du.edu/~mschwart/xml/president.xsd" 
      date="2012-08-18"> 
      <president> 
       <number>1</number> 
       <name>George Washington</name> 
       <birthday>2/22/1732</birthday> 
       <took_office>1789-04-30</took_office> 
       <left_office>1797-03-04</left_office> 
       <party>no party</party> 
       <term> 
        <number>1</number> 
        <vice_president>John Adams</vice_president> 
       </term> 
       <term> 
        <number>2</number> 
        <vice_president>John Adams</vice_president> 
       </term> 
      </president> 

      <president> 
       <number>2</number> 
       <name>John Adams</name> 
       <birthday>10/30/1735</birthday> 
       <took_office>1797-03-04</took_office> 
       <left_office>1801-03-04</left_office> 
       <party>Federalist</party> 
       <term> 
        <number>3</number> 
        <vice_president>Thomas Jefferson</vice_president> 
       </term> 
      </president> 
      <president> 
       <number>3</number> 
       <name>Thomas Jefferson</name> 
       <birthday>4/13/1743</birthday> 
       <took_office>1801-03-04</took_office> 
       <left_office>1809-03-04</left_office> 
       <party>Democratic-Republican</party> 
       <term> 
        <number>4</number> 
        <vice_president>Aaron Burr</vice_president> 
       </term> 
       <term> 
        <number>5</number> 
        <vice_president>George Clinton</vice_president> 
       </term> 
      </president> 
      <president> 
       <number>4</number> 
       <name>James Madison</name> 
       <birthday>3/16/1751</birthday> 
       <took_office>1809-03-04</took_office> 
       <left_office>1817-03-04</left_office> 
       <party>Democratic-Republican</party> 
       <term> 
        <number>6</number> 
        <vice_president>George Clinton</vice_president> 
       </term> 
       <term> 
        <number>7</number> 
        <vice_president>Elbridge Gerry</vice_president> 
       </term> 
      </president></presidents> 

И в XSLT документ, в котором я добавляемые элементы для других запросов, но я теперь требуется сортировать данные по партии:

<xsl:template match="/"> 
    <html> 
     <head> 
      <link rel="stylesheet" type="text/css" href="president_table.css" /> 
      <title>Table of US Presidents</title> 
     </head> 
     <body> 
      <h1>Table of US Presidents</h1> 
      <table> 
      <tr> 
       <th>Name</th> 
       <th>Birthday</th> 
       <th>Took Office</th> 
       <th>Left Ofice</th> 
       <th>Party</th> 
       <th>Vice President(s)</th> 
      </tr> 
      <xsl:apply-templates select="presidents"> 
       <xsl:sort select="party" order="descending"/> 
       </xsl:apply-templates> 
      </table> 
     </body> 
    </html> 
</xsl:template> 
<xsl:template match="president"> 
    <tr> 
     <td><xsl:apply-templates select="name"/></td> 
     <td><xsl:apply-templates select="birthday"/></td> 
     <td><xsl:apply-templates select="took_office"/></td> 
     <td><xsl:apply-templates select="left_office"/></td> 
     <td> 
      <xsl:apply-templates select="party"> 
      </xsl:apply-templates> 
      <xsl:value-of select="party"/> 
     </td> 
     <td> 
      <xsl:apply-templates select="term"/> 
     </td> 
    </tr> 
</xsl:template> 
<xsl:template match="term"> 
    <xsl:number value="position()" format="1. " /> 
    <xsl:value-of select="vice_president" /><br /> 
</xsl:template> 
<xsl:template match="party"> 
    <xsl:choose> 
     <xsl:when test=". = 'Federalist'"> 
      <xsl:attribute name="class">Federalist</xsl:attribute> 
     </xsl:when> 
     <xsl:when test=". = 'Democratic-Republican'"> 
      <xsl:attribute name="class">Democratic-Republican</xsl:attribute> 
     </xsl:when> 
     <xsl:when test=". = 'Democratic'"> 
      <xsl:attribute name="class">Democratic</xsl:attribute> 
     </xsl:when> 
     <xsl:when test=". = 'Republican'"> 
      <xsl:attribute name="class">Republican</xsl:attribute> 
     </xsl:when> 
     <xsl:when test=". = 'Whig'"> 
      <xsl:attribute name="class">Whig</xsl:attribute> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:attribute name="class">noparty</xsl:attribute> 
     </xsl:otherwise> 
    </xsl:choose> 
</xsl:template> 

Я искал вокруг и ничего конкретного, что такое happe и я следовал инструкциям из нескольких примеров, пытаясь разобраться в деталях.

Спасибо за любую помощь заранее!

+0

'party' - ребенок' президента', а не 'президентов'. Попробуйте изменить шаблон заявки на 'select =" президенты/президент ". (Непроверенный, так как я нахожусь на моем телефоне.) –

+0

вот оно! Благодарю. – user1892386

ответ

0

party является ребенком president, а не presidents. Попробуйте изменить свои шаблоны заявок на select="presidents/president".

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