You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSLT中for-each超出MeetingPollingQuestion节点问题咨询

问题解决方法

核心问题原因

你使用的//MeetingPollingParts是全局路径选择器,会从XML根节点开始匹配所有MeetingPollingParts节点,完全忽略当前MeetingPollingQuestion的上下文范围,因此会超出目标节点的范围。

具体修改步骤

1. 限定MeetingPollingParts的上下文范围

将内部的<xsl:for-each select="//MeetingPollingParts">修改为:

<xsl:for-each select="MeetingPollingParts/MeetingPollingParts">
  • 说明:当前上下文是MeetingPollingQuestion节点,MeetingPollingParts/MeetingPollingParts表示当前节点下的MeetingPollingParts容器内的所有子MeetingPollingParts节点,只会选中当前问题对应的选项部分。

2. 修正单选框选项的取值路径

在MeetingPollingPartsTypeId = 3的分支里,原取值路径错误,修改为:

<xsl:value-of select="QuestionValue" disable-output-escaping="yes"/>
  • 说明:此时上下文是MeetingPollingPartsValues节点,直接取自身的QuestionValue即可,无需多层回溯。同时注意MeetingPollingPartsValues是嵌套结构,循环时需要遍历MeetingPollingPartsValues/MeetingPollingPartsValues才能正确获取每个选项。

修改后的完整XSLT代码

<xsl:template match="//ArrayOfMeetingPollingQuestion">
  <xsl:for-each select="//MeetingPollingQuestion">
    <div class="portlet box blue sortable page-break-before: always" style="page-break-after: always;border: 1px solid #0265A6;">
      <div class="portlet-title" style="background-color: #0265A6;min-height:41px">
        <xsl:choose>
          <xsl:when test="MeetingPollingQuestionTypeId = 2">
            <div class="caption">
              <i class="fa fa-th"></i>Multiple Choice
            </div>
            <div class="portlet-body" style="background-color: #fff;padding: 15px;">
              <!-- 修正:使用相对路径限定当前Question下的Parts -->
              <xsl:for-each select="MeetingPollingParts/MeetingPollingParts">
                <xsl:choose>
                  <xsl:when test="MeetingPollingPartsTypeId = 1">
                    <div class="row">
                      <div class="col-md-12">
                      <div class="form-group">
                        <xsl:value-of select="MeetingPollingPartsValues/MeetingPollingPartsValues/QuestionValue" disable-output-escaping="yes"/>
                        </div>
                      </div>
                    </div>
                  </xsl:when>
                  <xsl:when test="MeetingPollingPartsTypeId = 3">
                    <!-- 修正:遍历嵌套的MeetingPollingPartsValues节点 -->
                    <xsl:for-each select="MeetingPollingPartsValues/MeetingPollingPartsValues">
                        <div class="row">
                          <div class="col-md-12">
                            <div class="form-group">
                              <input type="radio"></input>
                              <label>
                              <!-- 修正:直接取当前节点的QuestionValue -->
                              <xsl:value-of select="QuestionValue" disable-output-escaping="yes"/>
                              </label>
                            </div>
                          </div>
                        </div>
                    </xsl:for-each>
                  </xsl:when>
                </xsl:choose>
              </xsl:for-each>
            </div>
          </xsl:when>
        </xsl:choose>
      </div>
    </div>
  </xsl:for-each>
</xsl:template>

内容的提问来源于stack exchange,提问作者Jefferson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 04:58:10