如何在XSLT 1.0中通过双向分组补全缺失节点?
稀疏行数据补全为完整网格的XSLT需求
我长期面临将稀疏行数据表条目转换为连贯网格结构的问题:此前因需将DOM转换为DDL用于后续SQL访问,所以没重视行元素缺失的问题,但现在要直接转换为HTML,结构完整性至关重要,必须补全行元素的空白。
源XML数据结构
- 根节点为
<TabularDoc> - 按
<Section>划分不同表格 - 每个表格内的
<Segment>对应一行数据 <Entry>的desgn属性分为三类:Table:表格标识Columns:定义列结构RowVals:行数据内容
- 核心问题:部分
RowVals类型的<Segment>存在<Entry>缺失的情况
期望转换结果
每个RowVals类型的<Segment>都包含与Columns一一对应的<Entry>:缺失的<Entry>需保留对应属性,但内容设为空。
已尝试的方法(均未成功)
- 基于
Columns属性分组补全RowVals,无法实现双向关联 - 识别现有
RowVals,补充Columns中未包含的成员,操作失败 - 先基于
Columns生成全量<Entry>,再用现有RowVals定制内容,但写不出对应的XPath表达式
技术偏好
优先采用低版本兼容方案:
- 首选XSLT 1.1
- 使用XALAN处理器(该处理器支持部分XML 2.0函数,仅兼容
<xsl:stylesheet>签名)
内容的提问来源于stack exchange,提问作者MKhomo
相关产品推荐
相关产品推荐

