通过多个XSL转换跟踪源元素

时间:2011-04-15 16:01:33

标签: xml xslt xslt-2.0

我正在寻找有关如何在多个XML到XML转换中跟踪源元素的想法。我有非常大的策略XML,这些XML是3-50MB,在不同的时间通过至少两个单独的XSLT。 XSLT本身有成千上万行代码。根据源XML,输出可能会有很大差异。

示例:假设我在原始源XML中有一个名为COMMISSION的源元素,其深度为10级:

<COMMISSION>$0.00</COMMISSION>

并且经过两次单独的变换后,它现在被称为B_COMMSN两个级别

<B_COMMSN>$0.00</B_COMMSN>

我不是原始编码器,我需要一种方法来快速找到B_COMMSN的原始源元素...除了追溯XSLT和所有模板之外。这对我来说只是一个工具......因此代码效率不是最优先考虑的事项...... XSLT 2.0很好。

简单地将所有值更改为唯一数字是不够的,因为1)XSLT包含数据类型比较,2)查找已完成。例如,我可能在一个元素中有位置编号3,而XSLT使用该值转到另一个节点集来查找该位置的地址。

思想???解决方案???一切都是一厢情愿的想法吗?

2 个答案:

答案 0 :(得分:1)

许多IDE(例如IIRC Oxygen和Stylus Studio)执行“回溯” - 告诉您样式表中生成特定结果树节点的位置,和/或源文档中的上下文当时是什么。您将无法通过多个样式表自动完成分析,但它是一个有用的调查工具。

答案 1 :(得分:0)

如果这可能有点帮助:

某些XSLT 1.0调试器具有“数据断点” - 在XML文档中的某个节点上设置断点会导致调试器在每次此节点与<xsl:template><xsl:for-each>匹配时中断

当然,此问题的最常见情况是定义不明确且无法解决,因为单个节点可能会影响许多输出节点/项,并且特定的输出节点/项可能依赖于来自不同XML文档的多个节点