Server is down at the moment, so I cannot add to
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25564
Hi All,
I have been looking through the problem source and the XML is generated by
hand with code like
writer.print("<tagdiff ");
if (mystartTag != null) {
writer.print("startTag=\"" + mystartTag + "\" ");
} else {
writer.print("startDate=\"" + mystartDate + "\" ");
}
if (myendTag != null) {
writer.print("endTag=\"" + myendTag + "\" ");
} else {
writer.print("endDate=\"" + myendDate + "\" ");
}
Which is all quite nasty.
Firstlly, the problem could be fixed by adding a CDATA to the offending
text, but this still leaves potential problems.
My favoured way of generating XML from a class is to extend XMLFilterImpl
and fire SAX events to a Transformer with no stylesheet and StreamResult
of the required output file, inspired by Cocoon 2.
Given that frequently the XML output of this task would be transformed to
HTML using taggdiff.xsl then the processing would be more efficient to use
that transformer from the outset; this would of course have to be optional
in order not to break existing build files.
The cvschangelog task is also guitly of handcrafting XML albeit using a
CDATA for certain elements, again this task is also frequently followed by
a style task.
CvsTagDiff extends AbstractCvsTask yet ChangeLogTask does not, but both
tasks are very similar, i.e:
execute cvs command
parse resultant file to memory
output memory contents to XML
And are both frequently followed by a style task, such similarity IMO
should be exploited.
Anyway, I am new to this open source apache stuff so appologies if I have
omitted and stages or information. I am happy to perform this work myself
of course.
Steve