Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting XSLT根据子节点的特定属性对父节点进行排序_Sorting_Xslt_Attributes_Parent - Fatal编程技术网

Sorting XSLT根据子节点的特定属性对父节点进行排序

Sorting XSLT根据子节点的特定属性对父节点进行排序,sorting,xslt,attributes,parent,Sorting,Xslt,Attributes,Parent,有史以来的第一篇帖子,已经做了很多搜索,但找不到足够具体的答案,或者更重要的是,找不到足够相关的答案。请注意,我是一名业务分析师,而不是开发人员,因此我可能在这里缺少一些理解 我们生成XML,然后对其进行处理以生成报告。当数据可以由表表示时,XML包含表标题(元素标题)、表标题行(提示)以及表示行(数据)和列(值)的重复节点的详细信息 我面临的问题是,我需要根据节点的文本值对数据节点进行排序,其中节点具有特定的属性值 在下面提供的示例XML中,我需要根据属性@pic='TRORGPCNT'的值文

有史以来的第一篇帖子,已经做了很多搜索,但找不到足够具体的答案,或者更重要的是,找不到足够相关的答案。请注意,我是一名业务分析师,而不是开发人员,因此我可能在这里缺少一些理解

我们生成XML,然后对其进行处理以生成报告。当数据可以由表表示时,XML包含表标题(元素标题)、表标题行(提示)以及表示行(数据)和列(值)的重复节点的详细信息

我面临的问题是,我需要根据节点的文本值对数据节点进行排序,其中节点具有特定的属性值

在下面提供的示例XML中,我需要根据属性@pic='TRORGPCNT'的值文本值按升序对数据节点进行排序,即TRORGPCNT为10的数据节点应该出现在TRORGPCNT为90的数据节点之前。然后,当生成报告时,表行按百分比升序排列

我希望我已经解释清楚了:)

关于如何实现这一点,有什么建议吗

示例XML:

<PROPOSAL_ELEMENT multi="Y" pec="TEACHRESP" elem_mandatory="N" elem_visible="Y">
        <ELEMENT_HEADING pec="TEACHRESP">Teaching Responsibility</ELEMENT_HEADING>
        <PROMPTS>
            <PROMPT pic="TRORGUN" item_mandatory="Y" item_visible="Y">Faculty or School with teaching responsibility</PROMPT>
            <PROMPT pic="TRORGPCNT" item_mandatory="Y" item_visible="Y">Teaching responsibility %</PROMPT>
        </PROMPTS>
        <DATA elem_mandatory="N" elem_visible="Y" delete_ind="N">
            <VALUES>
                <VALUE pic="TRORGUN" item_mandatory="Y" item_visible="Y" item_description="FACULTY OF NURSING AND HEALTH" display_in_summary_tab="Y" summary_order="">FACULTY OF NURSING AND HEALTH</VALUE>
                <VALUE pic="TRORGPCNT" item_mandatory="Y" item_visible="Y" item_description="" display_in_summary_tab="Y" summary_order="">90</VALUE>
            </VALUES>
        </DATA>
        <DATA elem_mandatory="N" elem_visible="Y" delete_ind="N">
            <VALUES>
                <VALUE pic="TRORGUN" item_mandatory="Y" item_visible="Y" item_description="FACULTY OF ARTS" display_in_summary_tab="Y" summary_order="">FACULTY OF ARTS</VALUE>
                <VALUE pic="TRORGPCNT" item_mandatory="Y" item_visible="Y" item_description="" display_in_summary_tab="Y" summary_order="">10</VALUE>
            </VALUES>
        </DATA>

教学责任
负责教学的教师或学校
教学责任%
护理与健康学院
90
文学院
10

XSLT中的排序是通过使用来完成的,它必须作为选择要排序的节点的每个
应用模板的
的第一个子项出现。如果您选择的是
数据
元素节点集,则将使用适当的排序指令

<xsl:sort select="VALUES/VALUE[@pic='TRORGPCNT']"
  data-type="number" />

谢谢Ian,我尝试在@pec='TEACHRESP'时添加基于处理建议元素的排序,但没有效果。我会继续尝试,并在结果出来时发布结果。