Archer IRM技术问题:如何用XSLT引用分层应用的子层级?
Archer子层级数据馈送的XSLT修复方案
问题根源
Archer的层级应用中,子层级字段并非直接处于根节点下,而是嵌套在父层级的Reference节点内部。直接引用子层级字段GUID会因为路径不匹配,导致无法定位到数据。
调整后的XSLT代码
假设父层级字段的GUID为父层级字段GUID,子层级目标字段的GUID为子层级字段GUID,修改后的XSLT如下:
<Product_Service> <!-- 先遍历父层级的引用集合 --> <xsl:for-each select="Field[@guid = '父层级字段GUID']/Reference"> <!-- 在每个父层级引用下,定位子层级字段并提取ID --> <xsl:for-each select="Field[@guid = '子层级字段GUID']/Reference"> <ID> <xsl:value-of select="@id"/> </ID> </xsl:for-each> </xsl:for-each> </Product_Service>
核心逻辑说明
- 必须先通过父层级字段的GUID定位到父记录的
Reference节点,因为子层级字段隶属于父记录,XML结构上是嵌套关系。 - 若交叉引用直接指向子层级,仍需遵循Archer的XML结构规则——可通过数据馈送的预览功能查看原始XML输出,确认子层级字段的准确嵌套路径,再调整
select表达式。
调试步骤
- 用Archer数据馈送的预览功能导出完整XML,确认子层级字段的实际路径,比如是否为
Field[@guid='父GUID']/Reference/Field[@guid='子GUID']/Reference。 - 先单独调试父层级的遍历逻辑,验证能正确获取父记录,再逐步添加子层级的提取逻辑。
内容的提问来源于stack exchange,提问作者Dom
相关产品推荐
相关产品推荐

