Доступ к данным из нескольких документов - PullRequest
0 голосов
/ 13 февраля 2012

У меня проблемы с отображением данных.Отображается только первый элемент в документе XML.Мне нужно, чтобы список участников отображался сгруппированными по сумме внесенных денег.Вот мой код:

<xsl:stylesheet version='1.0' xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="persons" select="document('persons.xml')" />

<xsl:key name="contAmount" match="donation" use="@amount" />
<xsl:key name="pinID" match="donation" use="@pin" />
<xsl:key name="personID" match="person" use="@pid" />

<xsl:template match="/">
  <html>
   <head>
     <title>Lighthouse Charitable Trust</title>
     <link href="money.css" rel="stylesheet" type="text/css" />
   </head>
   <body>
   <h2>Contribution Report</h2>
   <p>Total Donation Amount: 
    <xsl:value-of select="format-number(sum(//donations/donation/@amount), '$###,000')" />
  </p>
  <p>Total Donors:
    <xsl:value-of select="count($persons/persons/person)" />      
  </p>

 <p>
   <xsl:variable name="cid" select="//donations/donation/@pin" />
    <xsl:for-each select="$persons">
     <xsl:value-of select="key('personID', $cid)/firstName" /> &#160;
     <xsl:value-of select="key('personID', $cid)/lastName" /> <br />
     <xsl:value-of select="key('personID', $cid)/street" /> <br />
     <xsl:value-of select="key('personID', $cid)/city" />,
     <xsl:value-of select="key('personID', $cid)/state" /> &#160;
     <xsl:value-of select="key('personID', $cid)/zip" /> <br />
     <xsl:value-of select="key('personID', $cid)/phone" /> <br />
   </xsl:for-each>
 </p>

 <a href="#{generate-id()}">
 <xsl:value-of select="person" />
</a> 

</body>
</html>
</xsl:template>

</xsl:stylesheet>

Спасибо!

1 Ответ

0 голосов
/ 13 февраля 2012

Ваша переменная persons содержит документ, который представляет собой один узел с дочерними элементами, а не список узлов.

Когда вы используете <xsl:for-each> позже в своей таблице стилей, вы выполняете только итерацию'список', содержащий этот один узел документа.Трудно сказать точно, не видя ваши исходные документы, но похоже, что вам, вероятно, нужно указать $persons/persons/person вместо просто $persons.Это также может сделать ваше использование key('personID', $cid) излишним, но трудно быть уверенным без дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...