有史以来第一篇文章,已经做了大量的搜索,但找不到具体的答案,或者更重要的是,找不到足够相关的答案。请注意,我是业务分析师,而不是开发人员,所以我可能在这里缺少一些理解。
我们生成XML然后处理以生成报告。如果数据可以由表表示,则XML包含表标题(ELEMENT_HEADING),表标题行(PROMPTS)的详细信息,然后重复表示行(DATA)和列(VALUES)的节点。
我面临的问题是我需要根据节点具有特定属性值的节点的文本值对DATA节点进行排序。
在下面提供的示例XML中,我需要根据属性@ pic ='TRORGPCNT'的VALUE文本值按升序对DATA节点进行排序,即TRORGPCNT为10的DATA节点应出现在DATA节点之前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>
答案 0 :(得分:1)
XSLT中的排序是使用the xsl:sort
instruction完成的,a Uri
is not a file必须显示为选择要排序的节点的for-each
或apply-templates
的第一个子节点。如果您正在选择DATA
个元素节点集,那么适当的排序指令将是
<xsl:sort select="VALUES/VALUE[@pic='TRORGPCNT']"
data-type="number" />