我需要帮助XSL& ASP.NET问题

时间:2011-02-18 15:09:58

标签: c# xml xslt

我有一个调用webservice来获取数据的页面。屏幕正确连接,我能够显示我期望的数据。现在我需要在xsl中的for-each中编写另一个内部循环,但是我需要传递一个参数来对父数据集进行排序,并且只需要在子视图中显示一个子集。这是我到目前为止的代码块:

这是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 :(得分:0)

我在这里做了一些假设,因为你的问题太高了。我希望我的距离不会太远。

我相信您正在寻找以下代码段的内容

<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选择标准产生的节点集。我再次在这里做了一个假设,并将第一个显示的属性作为排序标准。让我们再次知道你真正想要的是什么。