I've come across an interesting problem that I'd like some ideas to solve.
So I'm writing a series of XSLT stylesheets to convert s1000d issue
2.2 to issue 4. This content also has change markup that we want to
strip/resolve as we move forward. So I'm running a conversion
sequence like this:
1) Renumber/name the data modules and all links between them in the files
2) Resolve all change markup and strip.
3) Move from 2.2 to issue 3 and correct some tagging issues
4) Move from 3 to issue 4 changing the element and attribute names
and some structures that were reworked
I recently discovered that the authors did some things with the
change markup that I didn't expect (you say that never happens right
;-)) !. So to aid the debugging and verifying that the stylesheet is
not introducing problems I have been trying to capture the "before"
state of the content in comments and then output the resolved
results. So content is marked for change with a specific <change> tag
or many elements have the same attributes to let you mark change on
the structural tags. So I can get some involved markup where entire
sections might be flagged to be deleted or modified and I'm trying to
copy that structure.
To copy the content I'm using <xsl:copy-of> which does the trick of
getting the current condition. I tried wrapping this in a comment with:
<xsl:comment>
<xsl:copy-of select="."/>
</xsl:copy-of>
That only got a comment with the text content of the element I was
copying - no markup. So I then tried this that worked:
<xsl:text disable-output-escaping="yes">
<!--
</xsl:text>
<xsl:copy-of select="."/>
<xsl:text disable-output-escaping="yes">
-->
</xsl:text>
This got the markup and all the contained content. But oh those
writers ;-), they also included their own comments in some of those
elements. So when I tried processing these results in the next step I
got errors about nesting comments inside comments.
So my next thought was to wrap this information inside a CDATA
section with similar constructs:
<xsl:text disable-output-escaping="yes">
<![CDATA[
</xsl:text>
<xsl:copy-of select="."/>
<xsl:text disable-output-escaping="yes">
]]>
</xsl:text>
This worked great for this stage, but I found after the next
processing step that those CDATA sections were unwrapped and the
text/markup that was escaped was left in place.
I would like to be able to push these files through all the steps and
have the intermediate results available for troubleshooting - that
was my goal. It looks like I'm going to have to have the files
reviewed/cleaned up by hand immediately following the removal of the
change markup and then after the files are clean, then continue
processing. That forces the team to have to touch the files twice.
As I'm writing this up, maybe what I need to do is to wrap CDATA
sections inside CDATA sections. Such that there are enough wrappings
to allow the last stage to still have one level of wrapping left. Not
sure if it is legal, but it is an idea to work around the problem.
The writers/conversion team will not see the multiple wrappings
unless they (more likely me) have to go back to trace down a problem.
The only other way I can see how to do this is to not to use a fully
aware XML processing method - but I have all these stylesheets
completed except for this last minute problem. Another possibility
would be to push the change markup removal to the last step. It would
mean rewriting that stylesheet to deal with the new issue 4 elements,
but that would also work.
Anyone have ideas for an alternate solution?
---------------------------------------------------------------------------
Danny Vint
Panoramic Photography
http://www.dvint.com
voice: 619-938-3610
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--