rank 题目类型显示一个选项列表,受访者必须将其拖动排序(或以其他方式从第一到最后排列)。它将结果存储为选项值的空格分隔列表,按所选顺序排列,最高优先级的选项排在第一位。

基本 XLSForm 规范

typenamelabel
rank prioritiesmain_priority按重要性从高到低排列这些社区需求

选项在 choices 工作表中定义,就像 select_one 一样:

survey:

typenamelabel
rank prioritiesmain_priority按重要性从高到低排列这些需求

choices:

list_namenamelabel
prioritieswater清洁水源
prioritieshealth医疗保健
prioritieseducation教育
prioritiesroads道路
prioritieselectricity电力

存储值格式

存储的值是按排名顺序排列的选项值的空格分隔列表(第一个 = 最高优先级):

  water education health roads electricity
  

提取排名位置

使用 selected-at() 获取特定排名处的选项:

typenamelabelcalculation
rank prioritiesmain_priority排列社区需求
calculatetop_priorityselected-at(${main_priority}, 0)
calculatesecond_priorityselected-at(${main_priority}, 1)

selected-at(${main_priority}, 0) 返回排在第一位的值(索引 0 = 最高排名)。

在重复组中使用 rank-index()

rank 在重复组中使用时,rank-index() 允许您从重复组外部引用序数排名:

typenamelabelcalculation
calculatefirst_rankedrank-index(1, ${score})

有关 rank-index()rank-index-if() 的完整详情,请参阅函数——重复字段函数

用途

排序题目通常用于:

  1. 优先级排序——请社区对发展需求进行排序
  2. 偏好排序——对产品功能、服务属性或政策选项进行排序
  3. 考试项目排序——排列流程中的步骤
  4. 前 N 名选择——与 selected-at() 结合,只提取前 1、2 或 3 名

最佳实践

  1. 保持列表简短(3–7 个项目)——超过 7–8 个选项时,排序会变得认知负担很重。
  2. 使用清晰、相互排斥的选项标签,避免对"第一"的含义产生混淆。
  3. 添加提示文本说明排名方向(例如,“拖动排序:第一 = 最重要”)。
  4. 如果需要确保所有选项都已排名,使用 count-selected(.) = x 进行验证。

限制

  • 拖动排名控件需要触摸屏或鼠标——在纯键盘环境中可能无法正常工作。
  • 在某些旧版移动客户端上,排名控件可能会退化为编号输入界面。
  • 您不能部分排名(即只对部分选项进行排名)——所有选项都必须排序。
此页面有帮助吗?