如何在XSLT 1.0中将分组的检查类型值传递至跳转页面筛选信息?
解决方案
1. 首页:生成带检查类型参数的跳转链接
在首页的Muenchian分组展示代码里,给每个检查类型的跳转链接追加查询字符串参数,把当前检查类型的值传递过去。注意对特殊字符做编码,避免URL解析出错:
<!-- 首页的Muenchian分组逻辑 --> <xsl:for-each select="EntityRef/Attribute[@name='JV_Inspection_Type']/Value[generate-id() = generate-id(key('distinct-inspection-types', .)[1])]"> <xsl:variable name="currentType" select="."/> <!-- 生成带参数的跳转链接 --> <a href="inspection-details.xsl?inspectionType={encode-uri($currentType)}"> <xsl:value-of select="$currentType"/> </a> <!-- 可追加该类型的统计信息,比如记录数量 --> <span>(共{count(key('distinct-inspection-types', $currentType))}条记录)</span> </xsl:for-each>
2. 跳转页面:接收参数并筛选对应数据
在跳转页面的XSLT中,先定义参数接收传递来的检查类型值,再用该参数筛选出匹配的记录:
步骤1:定义接收参数
在xsl:stylesheet内部、所有模板之前添加参数定义:
<xsl:param name="inspectionType"/>
步骤2:筛选并展示对应数据
直接用参数匹配JV_Inspection_Type的值,或结合Muenchian分组高效筛选:
<!-- 遍历所有检查类型匹配参数值的记录 --> <xsl:for-each select="EntityRef[Attribute[@name='JV_Inspection_Type']/Value = $inspectionType]"> <div class="inspection-item"> <!-- 展示场所名称 --> <h3>场所:<xsl:value-of select="Attribute[@name='Location_Name']/Value"/></h3> <!-- 展示关联图片(假设图片路径存于Image_Path属性) --> <img src="{Attribute[@name='Image_Path']/Value}" alt="检查现场图片"/> <!-- 展示其他相关信息 --> <p>检查时间:<xsl:value-of select="Attribute[@name='Inspection_Date']/Value"/></p> </div> </xsl:for-each>
补充:处理参数为空的场景
如果要兼容未传递参数的情况,可添加默认提示:
<xsl:if test="not($inspectionType)"> <p>请选择具体的检查类型查看详情</p> </xsl:if>
关键说明
encode-uri()函数用于处理检查类型值中的特殊字符(如空格、&、中文等),保证URL参数能正确传递。- 跳转页面的XSLT需和首页共用同一XML数据源,或能访问包含检查记录的XML数据。
- 查询字符串是XSLT 1.0场景下最通用的参数传递方案,无需依赖额外扩展功能。
内容的提问来源于stack exchange,提问作者david
相关产品推荐
相关产品推荐

