# Author: Vadim Nasardinov (vadimn@redhat.com) # Since: 2002-10-31 # Version: $Id: NOTES 287 2005-02-22 00:29:02Z sskracic $ $DateTime: 2002/11/18 16:29:30 $ EXCISING XSLT AND STATIC HTML DEPENDENCIES forum.xsl has imports the following stylesheets: We need to factor out the Forum's dependency on CMS and ECM. To figure out which templates from cms-admin.xsl and workspace.xsl are really used, I wrote an XSLT stylesheet for instrumenting our deployed .xsl files with some additional xsl:comment elements that would help us keep track of which templates the Forum application really uses. See //tools/etc/xslt/debug/mark-templates.sh //tools/etc/xslt/debug/mark-templates.xsl //tools/etc/xslt/debug/extract-matches.pl //tools/etc/xslt/debug/restore-backups.sh mark-templates.xsl is a quick-and-dirty version of the debugging support discussed in http://post-office.corp.redhat.com/pipermail/ccm-engineering-list/2002-August/000144.html It works in conjunction with the following patch: $ p4 diff -du //core-platform/dev/src/com/arsdigita/sitenode/BasePresentationManager.java#14 ==== //core-platform/dev/src/com/arsdigita/sitenode/BasePresentationManager.java#14 - /var/vadim/p4checkout/core-platform/dev/src/com/arsdigita/sitenode/BasePresentationManager.java ==== @@ -469,8 +469,21 @@ // document. xf.setOutputProperty("encoding", defaultCharset); + java.io.StringWriter swriter = new java.io.StringWriter(20000); xf.transform(new DOMSource(doc.getInternalDocument()), - new StreamResult(writer)); + new StreamResult(swriter)); + + swriter.close(); + String basename = "/var/vadim/tmp/html-dumps/" + System.currentTimeMillis(); + String htmlFile = basename + ".html"; + String xmlFile = basename + ".xml"; + String xslPath = basename + ".path"; + + com.arsdigita.util.Debug.dumpToFile(htmlFile,swriter.toString()); + com.arsdigita.util.Debug.dumpToFile(xmlFile, doc.toString(true)); + com.arsdigita.util.Debug.dumpToFile(xslPath, ss.getPath() + "\n"); + + writer.write(swriter.toString()); DeveloperSupport.endStage("PresMgr transform"); } $ Running the ECM Bboard application with instrumented stylesheets shows that the following templates are used by the Bboard app: webapps/acs/packages/bboard/xsl/bboard.xsl; match=bboard:category-nav; webapps/acs/packages/bboard/xsl/bboard.xsl; match=bboard:confirm-post; webapps/acs/packages/bboard/xsl/bboard.xsl; match=bboard:message; webapps/acs/packages/bboard/xsl/bboard.xsl; match=bebop:list[@class='messageList']; webapps/acs/packages/bebop/xsl/BoxPanel.xsl; match=bebop:boxPanel[@axis='1']; webapps/acs/packages/bebop/xsl/BoxPanel.xsl; name=make-attribute; webapps/acs/packages/bebop/xsl/CheckBoxGroup.xsl; match=bebop:checkbox; webapps/acs/packages/bebop/xsl/CheckBoxGroup.xsl; match=bebop:checkboxGroup; webapps/acs/packages/bebop/xsl/ColumnPanel.xsl; match=bebop:columnPanel; webapps/acs/packages/bebop/xsl/ColumnPanel.xsl; match=bebop:pad; webapps/acs/packages/bebop/xsl/ColumnPanel.xsl; match=bebop:padFrame|bebop:border; webapps/acs/packages/bebop/xsl/ColumnPanel.xsl; match=bebop:panelRow; webapps/acs/packages/bebop/xsl/DimensionalNavbar.xsl; match=bebop:dimensionalNavbar; webapps/acs/packages/bebop/xsl/Form.xsl; match=bebop:form; webapps/acs/packages/bebop/xsl/GridPanel.xsl; match=bebop:gridPanel; webapps/acs/packages/bebop/xsl/PageState.xsl; match=bebop:pageState; webapps/acs/packages/bebop/xsl/RadioGroup.xsl; match=bebop:radio; webapps/acs/packages/bebop/xsl/RadioGroup.xsl; match=bebop:radioGroup; webapps/acs/packages/bebop/xsl/SegmentedPanel.xsl; match=bebop:segmentHeader|bebop:segmentBody; webapps/acs/packages/bebop/xsl/SegmentedPanel.xsl; match=bebop:segmentedPanel; webapps/acs/packages/bebop/xsl/SegmentedPanel.xsl; name=segment; webapps/acs/packages/bebop/xsl/Select.xsl; match=bebop:option; webapps/acs/packages/bebop/xsl/Select.xsl; match=bebop:select; webapps/acs/packages/bebop/xsl/Table.xsl; match=bebop:tbody; webapps/acs/packages/bebop/xsl/Table.xsl; match=bebop:thead; webapps/acs/packages/bebop/xsl/TextArea.xsl; match=bebop:textarea; webapps/acs/packages/bebop/xsl/Widget.xsl; match=bebop:formWidget; webapps/acs/packages/bebop/xsl/plain.xsl; match=*|@*|text(); webapps/acs/packages/jigsaw/xsl/workspace.xsl; match=bebop:page[@class='workspace']; webapps/acs/packages/jigsaw/xsl/workspace.xsl; match=bebop:tabbedPane; webapps/acs/packages/jigsaw/xsl/workspace.xsl; match=bebop:table; webapps/acs/packages/jigsaw/xsl/workspace.xsl; match=workspace:body; webapps/acs/packages/jigsaw/xsl/workspace.xsl; match=workspace:header; webapps/acs/packages/toolbox/xsl/ControlBar.xsl; match=bebop:controlBar; There seems to be no dependency on any of CMS stylesheets, unless I missed a page when I was clicking around. Based on this superficial testing, the import of content-section/xsl/cms-admin.xsl in bboard.xsl seems unnecessary. BRANCHING HISTORY The branch spec name for this branch is "forum". It maps the bboard files like so: //cw/dev/.../bboard/... //apps/forum/dev/.../forum/... -//cw/dev/.../ui/... //apps/forum/dev/.../ui/... The files were branched at 22590 in change 22600. Note that some files fell through the cracks in 22600. The "forum" branch spec did not pick up SQL scripts that create indices. Therefore, these files: //cw/dev/sql/default/indexes/index-bboard_forums_cat_id_idx.sql //cw/dev/sql/default/indexes/index-bboard_subs_digest_id_idx.sql //cw/dev/sql/default/indexes/index-bboard_subs_group_id_idx.sql //cw/dev/sql/default/indexes/index-bboard_thd_subs_grp_id_idx.sql //cw/dev/sql/default/indexes/index-bboard_thd_subs_thrd_id_idx.sql have been manually branched into these files: //apps/forum/dev/sql/default/indexes/index-forum_forums_cat_id_idx.sql //apps/forum/dev/sql/default/indexes/index-forum_subs_digest_id_idx.sql //apps/forum/dev/sql/default/indexes/index-forum_subs_group_id_idx.sql //apps/forum/dev/sql/default/indexes/index-forum_thd_subs_grp_id_idx.sql //apps/forum/dev/sql/default/indexes/index-forum_thd_subs_thrd_id_idx.sql For more background info, see the AIM chat between Justin and Rafi in //apps/forum/dev/doc/NOTES#3. TRANSITIVE REDUCTION http://mathworld.wolfram.com/TransitiveReduction.html To make the dependency graph readable, removed 11 transitively redundant edges from stylesheets in //cw/dev and //apps/forum/dev. The following edges have been removed: $ diff-dot-files.py before-tredding.dot after-tredding.dot before-tredding.dot has 31 nodes and 38 edges after-tredding.dot has 31 nodes and 27 edges The following edges are present in /tmp/all-before.dot but not in /tmp/tredded.dot: bboard -> bebop, cms_admin chat_en -> bebop, cms_admin docs -> cms_admin faq -> bebop, cms_admin forum -> bebop, cms_admin glossary -> bebop workspace -> bebop (Total of 11 edges.) To make sure this does not break anything, clicked around ECM, recording matching files and templates. The comparison of the list of matching templates before and after the removal of the transitively redundant edges shows that all of the same templates continue to match. (I've only made 25 clicks before and after, so this is not very comprehensive.) For the list of matching templates, refer to //apps/forum/dev/doc/graphs/matches-before.txt //apps/forum/dev/doc/graphs/matches-after.txt To see the difference in the dependency graphs before and after, compare //apps/forum/dev/doc/graphs/aggregate-before.dot //apps/forum/dev/doc/graphs/aggregate-before.png //apps/forum/dev/doc/graphs/aggregate-after.dot //apps/forum/dev/doc/graphs/aggregate-after.png DECOUPLING FORUM'S XSLT FROM ECM Looks like about the only thing that the Forum app depends on in ECM is two templates in jigsaw/workspace.xsl. Copied these templates into //apps/forum/dev/web/packages/forum/xsl/workspace-hack.xsl. After this change, //apps/forum/dev/web/packages/forum/xsl/forum.xsl no longer depends on //cw/dev/web/packages/jigsaw/xsl/workspace.xsl, although there still remain asset dependencies on /packages/jigsaw/www/assets /packages/jigsaw/www/css Copied the following template from jigsaw/xsl/workspace.xsl that matched and moved it into //apps/forum/dev/web/packages/forum/xsl/workspace-hack.xsl, renaming it to Branched //cw/dev/web/packages/jigsaw/www/css/workspace.css into //apps/forum/dev/web/packages/forum/www/css/basic.css, 'cause I don't feel like reconciling it with //apps/forum/dev/web/packages/forum/www/css/forum.css. # Local Variables: # mode: text # End: