Мне нужна помощь с вопросами XSL и ASP.NET - PullRequest
0 голосов
/ 18 февраля 2011

У меня есть страница, которая вызывает веб-сервис для получения данных. Экран подключается правильно, и я могу отображать ожидаемые данные. Теперь мне нужно написать еще один внутренний цикл внутри for-each в xsl, но мне нужно передать параметр для сортировки родительского набора данных и просто получить подмножество для отображения в дочернем представлении. Вот мой блок кода:

Вот XML

<xs:element name="ExchangeWantedItemsMeToodUsers">
<xs:complexType>
- <xs:sequence>
  <xs:element name="ExchangeWantedId" type="xs:int" minOccurs="0" /> 
  <xs:element name="ExchangeWantedName" type="xs:string" minOccurs="0" /> 
  <xs:element name="MeTooer" type="xs:string" minOccurs="0" /> 
  <xs:element name="MeTooerBankName" type="xs:string" minOccurs="0" /> 
  <xs:element name="DateFulfilled" type="xs:string" minOccurs="0" /> 
  <xs:element name="DateFulfilledUnformated" type="xs:dateTime" minOccurs="0" /> 
  <xs:element name="UserID" type="xs:int" minOccurs="0" /> 
  <xs:element name="FullName" type="xs:string" minOccurs="0" /> 
  <xs:element name="PostedBankName" type="xs:string" minOccurs="0" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:element>
- <xs:element name="ExchangeWantedItemsMeToodUsers1">
- <xs:complexType>
- <xs:sequence>
  <xs:element name="ExchangeWantedID" type="xs:int" minOccurs="0" /> 
  <xs:element name="DisplayName" type="xs:string" minOccurs="0" /> 
  <xs:element name="FullName" type="xs:string" minOccurs="0" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:element>

Вот это xsl

<xsl:for-each select="/root/ExchangeWantedItemsMeToodUsers">                
    <tr>
        <xsl:call-template name="AlternateRowColor" />
        <td><xsl:value-of select="ExchangeWantedName" /></td>
        <td>
            <xsl:for-each select="/root/ExchangeWantedItemsMeToodUsers">
                <xsl:value-of select="MeTooer" /> - <xsl:value-of 
                                                    select="MeTooerBankName" />
            </xsl:for-each>
        </td>
        <td><xsl:value-of select="FullName" /> - <xsl:value-of 
                                                select="PostedBankName" /></td>
        <td><xsl:value-of select="DateFulfilled" /></td>
    </tr>
</xsl:for-each>

1 Ответ

0 голосов
/ 18 февраля 2011

Я сделал несколько предположений здесь, потому что ваш вопрос слишком высокого уровня.Я надеюсь, что я не слишком далеко от цели.

Я считаю, что вы ищете что-то вроде следующего фрагмента

<xsl:for-each select="/root/ExchangeWantedItemsMeToodUsers[@FullName='xxxxx]">
   <xsl:sort select="MeTooer" data-type="text"/>
   <xsl:value-of select="MeTooer" /> - <xsl:value-of select="MeTooerBankName" />
</xsl:for-each>

Весьма вероятно, что вы на самом деле этого не делаетенужен внутренний цикл для фильтрации и сортировки.

  1. Вы можете ужесточить условия фильтрации, расширив выражение XPath, уже включенное в вашу директиву цикла (например, здесь я принял гипотезу, что вы уже знаете значение полного имени, которым вы былиинтересует) - что вы называете своим параметром.Поскольку ваш вопрос оставляет эти критерии открытыми, я выбрал атрибут FullName.Расскажите подробнее об этих дополнительных условиях фильтрации.Если он есть.

  2. Что касается сортировки, то для этой ситуации есть специальная директива XSLT.Он применяется к набору узлов, являющемуся результатом родительских критериев выбора for-each.Я снова сделал здесь гипотезу и выбрал первый отображаемый атрибут в качестве критерия сортировки.Дайте нам знать, что вы действительно хотите здесь снова.

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