|
Subject: RE: [xsl] Need a programmic way to read xslt file, and determine the mappings defined. From: "Andrew Welch" <ajwelch@xxxxxxxxxxxxxxx> Date: Mon, 8 Nov 2004 15:44:19 -0000 |
> No, my desire is to get a xslt file and with java determine
> the mapping. Then determine how to reverse eng the process to
> find my source.
>
> Background: My app uses xslt to translate data model A to
> data model B. My user wishes to not to write certain
> attributes in a table in data model B.
> He selects the attributes to mask. I would then like to
> inform him of the source that was used to map to that target
> attribute, and inform him of what other targets that same
> source was mapped to.
>
> So I need to something to parse the xslt file, and expose
> interfaces that allow me to easily determine this mapping.
A technique I've used for a completely different requirement may be
useful here. What you need to do is add a unique identifier to each
source element, then copy that through to the result. When the user
'masks' of a section of the HTML, you can find out which unique
identifiers have been masked and then re-parse the source xml to locate
the source elements.
The unique I identifier I used was the element index, added using an
XMLFilter as the source is read in. A separate XMLFilter adds an
attribute to every literal result element of the stylesheet as it gets
parsed to copy the element index through to the result. For example:
Source XML:
<root>
<foo/>
<bar/>
</root>
Source XML after XMLFilter:
<root id="1">
<foo id="2"/>
<bar id="3"/>
</root>
Stylesheet:
<xsl:template match="foo">
<div>
<xsl:value-of select="."/>
</div>
</xsl:template>
Stylesheet after XMLFilter:
<xsl:template match="foo">
<div elementIndex="{@id}">
<xsl:value-of select="."/>
</div>
</xsl:template>
Result when applied:
<div elementIndex="2"/>
So now when your user selects an area of the screen you can access the
elementIndex attribute and then query the source xml for an element with
a matching number, and locate <foo/>. That is, you know that that <div>
was generated from the template that processed the source <foo/>
element.
The element indexes and AVT's are all added at transform time using
XMLFilters so it keeps you source and stylesheets clean with a minimal
performance impact.
I've been a bit brief but I hope you get the idea,
Cheers
anderw
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] Need a programmic way to , Jarno.Elovirta | Thread | RE: [xsl] Need a programmic way to , Bill Riegel |
| RE: [xsl] XSLT - update attribute w, Jarno.Elovirta | Date | RE: [xsl] Need a programmic way to , Bill Riegel |
| Month |