johkar
johkar

Reputation: 321

Tracing source elements through multiple XSL transforms

I'm looking for ideas on how to trace source elements throughout multiple XML to XML transformations. I have very large policy XMLs that are 3-50MB that go through at least two separate XSLTs at different times. The XSLTs themselves have thousands and thousands of lines of code. The output can be vastly different depending on the source XML.

Example: Say I have a source element called COMMISSION that is 10 levels deep in the original source XML:

<COMMISSION>$0.00</COMMISSION>

and after two separate transforms it is now called B_COMMSN two levels in

<B_COMMSN>$0.00</B_COMMSN>

I'm not the original coder and I need a way to quickly find what the original source element of B_COMMSN is...other than tracing back through the XSLTs and all the templates. This will just be a tool for me...so code efficiency isn't the highest priority...XSLT 2.0 is fine.

Simply changing all the values to unique numbers isn't sufficient because 1) the XSLTs contain data-type comparisons, and 2) Lookups are done. For instance I might have location number 3 in one element and the XSLT uses that value to go to another nodeset to look up the address for that location.

Ideas??? Solutions??? Is it all wishful thinking?

Upvotes: 1

Views: 251

Answers (2)

Dimitre Novatchev
Dimitre Novatchev

Reputation: 243529

If this could help even just a bit:

Some XSLT 1.0 debuggers have "data breakpoints" -- setting a breakpoint on a certain node in an XML document causes the debugger to break every time this node has is matched by an <xsl:template> or <xsl:for-each>.

Of course, the most general case of this problem is ill-defined and unsolvable, because a single node may affect many output nodes/items, and a specific output node/item may depend on a number of nodes from different XML documents.

Upvotes: 0

Michael Kay
Michael Kay

Reputation: 163458

A number of IDEs (e.g. IIRC Oxygen and Stylus Studio) do "backtracking" - telling you where in the stylesheet a particular result tree node was generated, and/or what the context in the source document was at the time. You won't be able to automate the analysis all the way back through several stylesheets, but it's a useful investigative tool.

Upvotes: 1

Related Questions