在 DotNetNuke 表单和列表中使用 XSLT 对项目进行分组

发布于 2024-11-06 23:34:29 字数 3256 浏览 1 评论 0 原文

我必须使用表单和列表(DotNetNuke 模块)和 XSLT 对一组项目进行分组。

XML:

<UserDefinedTable>
<Data>
<UserDefinedRowId>1</UserDefinedRowId>
<Título>ABC</Título>
<Tipo>Type1</Tipo>
<URL>
<a href="" target="_blank">http://www.example.com/</a>
</URL>
<Imagem>
<img alt="Imagem" title="Imagem" src="/Portals/0/Links/img.png" />
</Imagem>
<Ordem>4</Ordem>
<Created_x0020_by>Example</Created_x0020_by>
<Created_x0020_at>2011-05-04T13:40:15+01:00</Created_x0020_at>
<Changed_x0020_by>Example</Changed_x0020_by>
<Changed_x0020_at>2011-05-10T16:57:56+01:00</Changed_x0020_at>
<EditLink>
http://example.com/page/page/tabid/74/ctl/edit/mid/520/Default.aspx?UserDefinedRowId=1
</EditLink>
<Created_x0020_by_UDT_Original>host</Created_x0020_by_UDT_Original>
<Created_x0020_by_UDT_Caption>Example</Created_x0020_by_UDT_Caption>
<Created_x0020_at_UDT_Value><!--063440113215-->04-05-2011 13:40</Created_x0020_at_UDT_Value>
<Created_x0020_at_UDT_Ticks>634401132150000000</Created_x0020_at_UDT_Ticks>
<Changed_x0020_by_UDT_Original>host</Changed_x0020_by_UDT_Original>
<Changed_x0020_by_UDT_Caption>Example</Changed_x0020_by_UDT_Caption>
<Changed_x0020_at_UDT_Value><!--063440643476-->10-05-2011 16:57</Changed_x0020_at_UDT_Value>
<Changed_x0020_at_UDT_Ticks>634406434760000000</Changed_x0020_at_UDT_Ticks>
<URL_UDT_Url/>
<URL_UDT_Caption>http://www.example.com/</URL_UDT_Caption>
<URL_UDT_Original>http://www.example.com/</URL_UDT_Original>
<Imagem_UDT_Url>/Portals/0/Links/image.png</Imagem_UDT_Url>
<Imagem_UDT_Caption>Imagem</Imagem_UDT_Caption>
<Imagem_UDT_Original>FileID=252</Imagem_UDT_Original>
</Data>
</UserDefinedTable>

元素 Data 表示列表中的一项。

我想按 Tipo 对结果进行分组。 我的意思是:

Type1

Elem1 Elem4 Elem5 ...

Type2

Elem2 Elem3 ...

我现在使用的 XSLT 不起作用:

<xsl:text>Type1</xsl:text>
<xsl:template match="udt:Data" mode="list">
<xsl:call-template name="Type1" />
</xsl:template>

<xsl:text>Type2</xsl:text>
<xsl:template match="udt:Data" mode="list">
<xsl:call-template name="Type2" />
</xsl:template>

<xsl:template name="Type1">
<xsl:if test="contains(&quot;Type1&quot;, udt:Tipo)">
<div style="float:left; margin: 5px;">
<xsl:call-template name="EditLink" />
<a href="{udt:URL_UDT_Original}" target="_blank">
<img src="{udt:Imagem_UDT_Url}" title="{udt:Título}" />
</a>
</div>
</xsl:if>
</xsl:template>

<xsl:template name="Type2">
<xsl:if test="contains(&quot;Type2&quot;, udt:Tipo)">
<div style="float:left; margin: 5px;">
<xsl:call-template name="EditLink" />
<a href="{udt:URL_UDT_Original}" target="_blank">
<img src="{udt:Imagem_UDT_Url}" title="{udt:Título}" />
</a>
</div>
</xsl:if>
</xsl:template>

有什么想法吗?

提前致谢!

I have to group a set of items using Form and List (DotNetNuke Module) and XSLT.

XML:

<UserDefinedTable>
<Data>
<UserDefinedRowId>1</UserDefinedRowId>
<Título>ABC</Título>
<Tipo>Type1</Tipo>
<URL>
<a href="" target="_blank">http://www.example.com/</a>
</URL>
<Imagem>
<img alt="Imagem" title="Imagem" src="/Portals/0/Links/img.png" />
</Imagem>
<Ordem>4</Ordem>
<Created_x0020_by>Example</Created_x0020_by>
<Created_x0020_at>2011-05-04T13:40:15+01:00</Created_x0020_at>
<Changed_x0020_by>Example</Changed_x0020_by>
<Changed_x0020_at>2011-05-10T16:57:56+01:00</Changed_x0020_at>
<EditLink>
http://example.com/page/page/tabid/74/ctl/edit/mid/520/Default.aspx?UserDefinedRowId=1
</EditLink>
<Created_x0020_by_UDT_Original>host</Created_x0020_by_UDT_Original>
<Created_x0020_by_UDT_Caption>Example</Created_x0020_by_UDT_Caption>
<Created_x0020_at_UDT_Value><!--063440113215-->04-05-2011 13:40</Created_x0020_at_UDT_Value>
<Created_x0020_at_UDT_Ticks>634401132150000000</Created_x0020_at_UDT_Ticks>
<Changed_x0020_by_UDT_Original>host</Changed_x0020_by_UDT_Original>
<Changed_x0020_by_UDT_Caption>Example</Changed_x0020_by_UDT_Caption>
<Changed_x0020_at_UDT_Value><!--063440643476-->10-05-2011 16:57</Changed_x0020_at_UDT_Value>
<Changed_x0020_at_UDT_Ticks>634406434760000000</Changed_x0020_at_UDT_Ticks>
<URL_UDT_Url/>
<URL_UDT_Caption>http://www.example.com/</URL_UDT_Caption>
<URL_UDT_Original>http://www.example.com/</URL_UDT_Original>
<Imagem_UDT_Url>/Portals/0/Links/image.png</Imagem_UDT_Url>
<Imagem_UDT_Caption>Imagem</Imagem_UDT_Caption>
<Imagem_UDT_Original>FileID=252</Imagem_UDT_Original>
</Data>
</UserDefinedTable>

The element Data represents an item on list.

I want to group the results by Tipo.
I mean:

Type1

Elem1 Elem4 Elem5 ...

Type2

Elem2 Elem3 ...

The XSLT I'm using now doesn't work:

<xsl:text>Type1</xsl:text>
<xsl:template match="udt:Data" mode="list">
<xsl:call-template name="Type1" />
</xsl:template>

<xsl:text>Type2</xsl:text>
<xsl:template match="udt:Data" mode="list">
<xsl:call-template name="Type2" />
</xsl:template>

<xsl:template name="Type1">
<xsl:if test="contains("Type1", udt:Tipo)">
<div style="float:left; margin: 5px;">
<xsl:call-template name="EditLink" />
<a href="{udt:URL_UDT_Original}" target="_blank">
<img src="{udt:Imagem_UDT_Url}" title="{udt:Título}" />
</a>
</div>
</xsl:if>
</xsl:template>

<xsl:template name="Type2">
<xsl:if test="contains("Type2", udt:Tipo)">
<div style="float:left; margin: 5px;">
<xsl:call-template name="EditLink" />
<a href="{udt:URL_UDT_Original}" target="_blank">
<img src="{udt:Imagem_UDT_Url}" title="{udt:Título}" />
</a>
</div>
</xsl:if>
</xsl:template>

Any ideas?

Thanks in advance!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

网白 2024-11-13 23:34:29

老实说,我不是 100% 确定您的最终目标是什么,但这里有一个简单的示例,应该演示使用 Muenchian 方法

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:key name="tipo" match="Data" use="Tipo" />

<xsl:template match="Data" />

<xsl:template match="Data[generate-id() = generate-id(key('tipo',Tipo)[1])]" >
  <xsl:value-of select="Tipo" />
  <xsl:for-each select="key('tipo',Tipo)">
    <xsl:value-of select="EditLink" />
  </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

将两个 语句替换为您需要的任何处理分别为组/项目。

To be honest, I'm not 100% sure what you're end goal is, but here's a simple example that should demonstrate the principles necessary to group elements using the Muenchian method:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:key name="tipo" match="Data" use="Tipo" />

<xsl:template match="Data" />

<xsl:template match="Data[generate-id() = generate-id(key('tipo',Tipo)[1])]" >
  <xsl:value-of select="Tipo" />
  <xsl:for-each select="key('tipo',Tipo)">
    <xsl:value-of select="EditLink" />
  </xsl:for-each>
</xsl:template>

</xsl:stylesheet>

Swap out the two <xsl:value-of statements for whatever processing you need on the group/item respectively.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文