你好,我对xslt非常陌生,我陷入了一个问题,我需要排序子节点,无论他们拥有什么父母并显示排列的内容。所以XML文件是XSLT对两个不同节点的子节点进行排序
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<report>
<rowsbypage>5</rowsbypage><!--added to complete the solution-->
<contenido>
<page>
<pagenumber>1</pagenumber>
<row regnum="0">
<column name="group_id" type="number">
<value><![CDATA[8]]></value>
<group_id type="number"><![CDATA[8]]></group_id>
</column>
<column name="group_name" type="text">
<value><![CDATA[CTA:Financials]]></value>
<group_name type="text"><![CDATA[CTA:Financials]]></group_name>
</column>
</row>
<row regnum="1">
<column name="group_id" type="number">
<value><![CDATA[9]]></value>
<group_id type="number"><![CDATA[9]]></group_id>
</column>
<column name="group_name" type="text">
<value><![CDATA[CTA:HR]]></value>
<group_name type="text"><![CDATA[CTA: RH]]></group_name>
</column>
</row>
<row regnum="2">
<column name="group_id" type="number">
<value><![CDATA[7]]></value>
<group_id type="number"><![CDATA[7]]></group_id>
</column>
<column name="group_name" type="text">
<value><![CDATA[CTA:Accounting]]></value>
<group_name type="text"><![CDATA[CTA:Accounting]]></group_name>
</column>
</row>
<row regnum="3">
<column name="group_id" type="number">
<value><![CDATA[2]]></value>
<group_id type="number"><![CDATA[2]]></group_id>
</column>
<column name="group_name" type="text">
<value><![CDATA[CTA:Shop]]></value>
<group_name type="text"><![CDATA[CTA:Shop]]></group_name>
</column>
</row>
<row regnum="38">
<column name="group_id" type="number">
<value><![CDATA[3]]></value>
<group_id type="number"><![CDATA[3]]></group_id>
</column>
<column name="group_name" type="text">
<value><![CDATA[P:Admins]]></value>
<group_name type="text"><![CDATA[P:Admins]]></group_name>
</column>
</row>
</page>
<page>
<pagenumber>2</pagenumber>
<row regnum="39">
<column name="group_id" type="number">
<value><![CDATA[1]]></value>
<group_id type="number"><![CDATA[1]]></group_id>
</column>
<column name="group_name" type="text">
<value><![CDATA[P:Sys]]></value>
<group_name type="text"><![CDATA[P:Sys]]></group_name>
</column>
</row>
<row regnum="40">
<column name="group_id" type="number">
<value><![CDATA[5]]></value>
<group_id type="number"><![CDATA[5]]></group_id>
</column>
<column name="group_name" type="text">
<value><![CDATA[P:Dir]]></value>
<group_name type="text"><![CDATA[P:Dir]]></group_name>
</column>
</row>
<row regnum="41">
<column name="group_id" type="number">
<value><![CDATA[6]]></value>
<group_id type="number"><![CDATA[6]]></group_id>
</column>
<column name="group_name" type="text">
<value><![CDATA[P:Ge]]></value>
<group_name type="text"><![CDATA[P:Ge]]></group_name>
</column>
</row>
<row regnum="42">
<column name="group_id" type="number">
<value><![CDATA[4]]></value>
<group_id type="number"><![CDATA[4]]></group_id>
</column>
<column name="group_name" type="text">
<value><![CDATA[P:Req]]></value>
<group_name type="text"><![CDATA[P:Req]]></group_name>
</column>
</row>
</page>
</contenido>
</report>
,我需要整理得到:
Page 1
Group ID Group Name
1 P:Sys
2 CTA:Shop
3 P:Admins
4 P:Req
5 P:Dir
Page2
Group ID Group Name
6 P:Ge
7 CTA:Accounting
8 CTA:Financials
9 CTA:HR
我会很高兴有这方面的帮助,亲切的问候
感谢您的帮助下你的反应乔尔和迈克尔我结束了这一点,我添加一个标签的行数一页一页地和xsl:
好后迈克尔的最后意见,即每个页面排序的所有记录一次又一次,最后的XSL的样子:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl">
<xsl:output method="html" encoding="iso-8859-1" version="5.0" />
<xsl:template match="/" >
<xsl:variable name="rowsByPage" select="report/rowsbypage" />
<xsl:variable name="rows">
<xsl:for-each select="report/contenido/page/row" >
<xsl:sort select="column/group_id" data-type="number" />
<div>
<xsl:for-each select="column" >
<div><xsl:value-of select="value"/></div>
</xsl:for-each>
</div>
</xsl:for-each>
</xsl:variable>
<xsl:for-each select="exsl:node-set($rows)/div[position() mod $rowsByPage = 1]" >
<div>
<div>Page <xsl:value-of select="position()" /></div>
<xsl:for-each select=". | following-sibling::div[position() < $rowsByPage]">
<xsl:copy-of select="." />
</xsl:for-each>
</div>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
** 1 **什么。确定在排序后分配给每个组的页码?** 2。**您是否真的想要如下所示的**文本输出? –
1.页码由页面可以包含的行数分配,2 。没有这个例子是简单的输出在一个html网格上 – sbasurto
在这个例子中,一个页面只能包含5行。 – sbasurto