You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2012/10/07 15:32:05 UTC

svn commit: r1395298 [24/42] - in /ofbiz/trunk/applications/content/template/docbook: ./ assembly/ assembly/schema/ common/ doc/ docsrc/ eclipse/ epub/ epub/bin/ epub/bin/lib/ epub/bin/xslt/ epub3/ extensions/ fo/ highlighting/ html/ htmlhelp/ images/ ...

Propchange: ofbiz/trunk/applications/content/template/docbook/epub3/titlepage.templates.xsl
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/applications/content/template/docbook/epub3/titlepage.templates.xsl
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/applications/content/template/docbook/epub3/titlepage.templates.xsl
------------------------------------------------------------------------------
    svn:mime-type = text/xsl

Added: ofbiz/trunk/applications/content/template/docbook/extensions/LICENSE.txt
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/template/docbook/extensions/LICENSE.txt?rev=1395298&view=auto
==============================================================================
--- ofbiz/trunk/applications/content/template/docbook/extensions/LICENSE.txt (added)
+++ ofbiz/trunk/applications/content/template/docbook/extensions/LICENSE.txt Sun Oct  7 13:31:52 2012
@@ -0,0 +1,264 @@
+LICENSE
+
+   Copyright (c) 2008 N. Quaine - NexWave Solutions All Rights Reserved. 
+
+CONDITIONS
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 
+Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 
+Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 
+Neither the name of the copyright holders nor the names of the contributors may be used to endorse or promote products derived from this software without specific prior written permission. 
+
+DISCLAIMER
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+    IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+    FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+    CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+    CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+    SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+    OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+    POSSIBILITY OF SUCH DAMAGE. 
+
+
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+
+Some code in src/java/org/apache/lucene/util/UnicodeUtil.java was
+derived from unicode conversion examples available at
+http://www.unicode.org/Public/PROGRAMS/CVTUTF.  Here is the copyright
+from those sources:
+
+/*
+ * Copyright 2001-2004 Unicode, Inc.
+ * 
+ * Disclaimer
+ * 
+ * This source code is provided as is by Unicode, Inc. No claims are
+ * made as to fitness for any particular purpose. No warranties of any
+ * kind are expressed or implied. The recipient agrees to determine
+ * applicability of information provided. If this file has been
+ * purchased on magnetic or optical media from Unicode, Inc., the
+ * sole remedy for any claim will be exchange of defective media
+ * within 90 days of receipt.
+ * 
+ * Limitations on Rights to Redistribute This Code
+ * 
+ * Unicode, Inc. hereby grants the right to freely use the information
+ * supplied in this file in the creation of products supporting the
+ * Unicode Standard, and to make copies of this file in any form
+ * for internal or external distribution as long as this notice
+ * remains attached.
+ */
+
+
+Some code in src/java/org/apache/lucene/util/ArrayUtil.java was
+derived from Python 2.4.2 sources available at
+http://www.python.org. Full license is here:
+
+  http://www.python.org/download/releases/2.4.2/license/
+
+

Propchange: ofbiz/trunk/applications/content/template/docbook/extensions/LICENSE.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/applications/content/template/docbook/extensions/LICENSE.txt
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/applications/content/template/docbook/extensions/LICENSE.txt
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/applications/content/template/docbook/extensions/NOTICE.txt
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/template/docbook/extensions/NOTICE.txt?rev=1395298&view=auto
==============================================================================
--- ofbiz/trunk/applications/content/template/docbook/extensions/NOTICE.txt (added)
+++ ofbiz/trunk/applications/content/template/docbook/extensions/NOTICE.txt Sun Oct  7 13:31:52 2012
@@ -0,0 +1,12 @@
+The webhelpindexer is released under the Apache 2.0 license and
+includes software from other projects.
+
+The webhelpindexer was originally developed by N. Quaine and released
+under a MIT/BSD-style license. See LICENSE.txt.
+
+This product includes software developed by The Apache Software
+Foundation (http://www.apache.org/). See LICENSE.txt.
+
+This product also includes software released as part of the Snowball
+project maintained by Martin Porter and Richard Boulton released under
+a BSD-style license: http://snowball.tartarus.org/

Propchange: ofbiz/trunk/applications/content/template/docbook/extensions/NOTICE.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/applications/content/template/docbook/extensions/NOTICE.txt
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/applications/content/template/docbook/extensions/NOTICE.txt
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/applications/content/template/docbook/extensions/README.LIBXSLT
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/template/docbook/extensions/README.LIBXSLT?rev=1395298&view=auto
==============================================================================
--- ofbiz/trunk/applications/content/template/docbook/extensions/README.LIBXSLT (added)
+++ ofbiz/trunk/applications/content/template/docbook/extensions/README.LIBXSLT Sun Oct  7 13:31:52 2012
@@ -0,0 +1,52 @@
+----------------------------------------------------------------------
+              README file for the libxslt extensions
+----------------------------------------------------------------------
+$Id: README.LIBXSLT 7877 2008-03-08 04:07:52Z xmldoc $
+
+These are XSLT extensions written in Python for use with the DocBook XML 
+stylesheets and the libxslt library[1].
+
+Currently, the only available extension is a function for adjusting column
+widths in tables. For more information, see the section describing the 
+equivalent Java extension in "DocBook XSL: The Complete Guide"[2].
+
+----------------------------------------------------------------------
+Preparations
+----------------------------------------------------------------------
+In addition to libxml2 and libxslt, the following software needs to 
+be installed before you start using the extensions:
+
+1. Python[3].
+
+2. Python bindings for libxml2/libxslt. Most distributions of 
+   libxml2/libxslt for Unix/Linux include these bindings.
+   A native Windows port is provided by Stéphane Bidoul[4].
+
+----------------------------------------------------------------------
+Installation of the extensions
+----------------------------------------------------------------------
+No special installation step is needed.
+
+----------------------------------------------------------------------
+How to use the extensions
+----------------------------------------------------------------------
+Instead of using xsltproc, you run a Python program (xslt.py). The 
+command has this general form:
+
+python xslt.py xmlfile xslfile [outputfile] [param1=val1 [param2=val]...]
+
+Modify paths, filenames, and parameters as needed. Make sure to set 
+the "use.extensions" and "tablecolumns.extension" parameters to 1.
+
+----------------------------------------------------------------------
+Manifest
+----------------------------------------------------------------------
+README.LIBXSLT   This file
+xslt.py          Executable script file
+docbook.py       Module that implements extensions
+
+----------------------------------------------------------------------
+[1] http://xmlsoft.org/XSLT
+[2] http://www.sagehill.net/docbookxsl/ColumnWidths.html
+[3] http://www.python.org/download
+[4] http://users.skynet.be/sbi/libxml-python

Added: ofbiz/trunk/applications/content/template/docbook/extensions/README.txt
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/template/docbook/extensions/README.txt?rev=1395298&view=auto
==============================================================================
--- ofbiz/trunk/applications/content/template/docbook/extensions/README.txt (added)
+++ ofbiz/trunk/applications/content/template/docbook/extensions/README.txt Sun Oct  7 13:31:52 2012
@@ -0,0 +1,4 @@
+See webhelp/docs/index.html for more information about the webhelp
+indexer and the webhelp output format. See webhelp/docs/index.html for
+more information about the webhelp indexer and the webhelp output
+format.

Propchange: ofbiz/trunk/applications/content/template/docbook/extensions/README.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/applications/content/template/docbook/extensions/README.txt
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/applications/content/template/docbook/extensions/README.txt
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/applications/content/template/docbook/extensions/docbook.py
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/template/docbook/extensions/docbook.py?rev=1395298&view=auto
==============================================================================
--- ofbiz/trunk/applications/content/template/docbook/extensions/docbook.py (added)
+++ ofbiz/trunk/applications/content/template/docbook/extensions/docbook.py Sun Oct  7 13:31:52 2012
@@ -0,0 +1,239 @@
+# docbook.py: extension module
+# $Id: docbook.py 8353 2009-03-17 16:57:50Z mzjn $
+
+import sys
+import string
+import libxml2
+import libxslt
+import re
+import math
+
+# Some globals
+pixelsPerInch = 96.0
+unitHash = { 'in': pixelsPerInch,
+             'cm': pixelsPerInch / 2.54,
+             'mm': pixelsPerInch / 25.4,
+             'pc': (pixelsPerInch / 72.0) * 12,
+             'pt': pixelsPerInch / 72.0,
+             'px': 1 }
+
+# ======================================================================
+
+def adjustColumnWidths(ctx, nodeset):
+    #
+    # Small check to verify the context is correcly accessed
+    #
+    try:
+        pctxt = libxslt.xpathParserContext(_obj=ctx)
+        ctxt = pctxt.context()
+        tctxt = ctxt.transformContext()
+    except:
+        pass
+
+    # Get the nominal table width
+    varString = lookupVariable(tctxt, "nominal.table.width", None)
+    if varString == None:
+        nominalWidth = 6 * pixelsPerInch;
+    else:
+        nominalWidth = convertLength(varString);
+
+    # Get the requested table width
+    tableWidth = lookupVariable(tctxt, "table.width", "100%")
+
+    foStylesheet = (tctxt.variableLookup("stylesheet.result.type", None) == "fo")
+
+    relTotal = 0
+    relParts = []
+
+    absTotal = 0
+    absParts = []
+
+    colgroup = libxml2.xmlNode(_obj = nodeset[0])
+    # If this is an foStylesheet, we've been passed a list of fo:table-columns.
+    # Otherwise we've been passed a colgroup that contains a list of cols.
+    if foStylesheet:
+        colChildren = colgroup
+    else:
+        colChildren = colgroup.children
+
+    col = colChildren
+    while col != None:
+        if foStylesheet:
+            width = col.prop("column-width")
+        else:
+            width = col.prop("width")
+
+        if width == None:
+            width = "1*"
+
+        relPart = 0.0
+        absPart = 0.0
+        starPos = string.find(width, "*")
+        if starPos >= 0:
+            relPart, absPart = string.split(width, "*", 2)
+            relPart = float(relPart)
+            relTotal = relTotal + float(relPart)
+        else:
+            absPart = width
+
+        pixels = convertLength(absPart)
+        absTotal = absTotal + pixels
+
+        relParts.append(relPart)
+        absParts.append(pixels)
+
+        col = col.next
+
+    # Ok, now we have the relative widths and absolute widths in
+    # two parallel arrays.
+    #
+    # - If there are no relative widths, output the absolute widths
+    # - If there are no absolute widths, output the relative widths
+    # - If there are a mixture of relative and absolute widths,
+    #   - If the table width is absolute, turn these all into absolute
+    #     widths.
+    #   - If the table width is relative, turn these all into absolute
+    #     widths in the nominalWidth and then turn them back into
+    #     percentages.
+
+    widths = []
+
+    if relTotal == 0:
+        for absPart in absParts:
+            if foStylesheet:
+                inches = absPart / pixelsPerInch
+                widths.append("%4.2fin" % inches)
+            else:
+                widths.append("%d" % absPart)
+    elif absTotal == 0:
+        for relPart in relParts:
+            rel = relPart / relTotal * 100
+            widths.append(rel)
+        widths = correctRoundingError(widths)
+    else:
+        pixelWidth = nominalWidth
+        if string.find(tableWidth, "%") < 0:
+            pixelWidth = convertLength(tableWidth)
+
+        if pixelWidth <= absTotal:
+            print "Table is wider than table width"
+        else:
+            pixelWidth = pixelWidth - absTotal
+
+        absTotal = 0
+        for count in range(len(relParts)):
+            rel = relParts[count] / relTotal * pixelWidth
+            relParts[count] = rel + absParts[count]
+            absTotal = absTotal + rel + absParts[count]
+
+        if string.find(tableWidth, "%") < 0:
+            for count in range(len(relParts)):
+                if foStylesheet:
+                    pixels = relParts[count]
+                    inches = pixels / pixelsPerInch
+                    widths.append("%4.2fin" % inches)
+                else:
+                    widths.append(relParts[count])
+        else:
+            for count in range(len(relParts)):
+                rel = relParts[count] / absTotal * 100
+                widths.append(rel)
+            widths = correctRoundingError(widths)
+
+    # Danger, Will Robinson! In-place modification of the result tree!
+    # Side-effect free? We don' need no steenkin' side-effect free!
+    count = 0
+    col = colChildren
+    while col != None:
+        if foStylesheet:
+            col.setProp("column-width", widths[count])
+        else:
+            col.setProp("width", widths[count])
+
+        count = count+1
+        col = col.next
+
+    return nodeset
+
+def convertLength(length):
+    # Given "3.4in" return the width in pixels
+    global pixelsPerInch
+    global unitHash
+
+    m = re.search('([+-]?[\d\.]+)(\S+)', length)
+    if m != None and m.lastindex > 1:
+        unit = pixelsPerInch
+        if unitHash.has_key(m.group(2)):
+            unit = unitHash[m.group(2)]
+        else:
+            print "Unrecognized length: " + m.group(2)
+
+        pixels = unit * float(m.group(1))
+    else:
+        pixels = 0
+
+    return pixels
+
+def correctRoundingError(floatWidths):
+    # The widths are currently floating point numbers, we have to truncate
+    # them back to integers and then distribute the error so that they sum
+    # to exactly 100%.
+
+    totalWidth = 0
+    widths = []
+    for width in floatWidths:
+        width = math.floor(width)
+        widths.append(width)
+        totalWidth = totalWidth + math.floor(width)
+
+    totalError = 100 - totalWidth
+    columnError = totalError / len(widths)
+    error = 0
+    for count in range(len(widths)):
+        width = widths[count]
+        error = error + columnError
+        if error >= 1.0:
+            adj = math.floor(error)
+            error = error - adj
+            widths[count] = "%d%%" % (width + adj)
+        else:
+            widths[count] = "%d%%" % width
+
+    return widths
+
+def lookupVariable(tctxt, varName, default):
+    varString = tctxt.variableLookup(varName, None)
+    if varString == None:
+        return default
+
+    # If it's a list, get the first element
+    if type(varString) == type([]):
+        varString = varString[0]
+
+    # If it's not a string, it must be a node, get its content
+    if type(varString) != type(""):
+        varString = varString.content
+
+    return varString
+
+# ======================================================================
+# Random notes...
+
+#once you have a node which is a libxml2 python xmlNode wrapper all common
+#operations are possible:
+#   .children .last .parent .next .prev .doc for navigation
+#   .content .type for introspection
+#   .prop("attribute_name") to lookup attribute values
+
+#    # Now make a nodeset to return
+#    # Danger, Will Robinson! This creates a memory leak!
+#    newDoc = libxml2.newDoc("1.0")
+#    newColGroup = newDoc.newDocNode(None, "colgroup", None)
+#    newDoc.addChild(newColGroup)
+#    col = colgroup.children
+#    while col != None:
+#        newCol = newDoc.newDocNode(None, "col", None)
+#        newCol.copyPropList(col);
+#        newCol.setProp("width", "4")
+#        newColGroup.addChild(newCol)
+#        col = col.next

Added: ofbiz/trunk/applications/content/template/docbook/extensions/lucene-analyzers-3.0.0.jar
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/template/docbook/extensions/lucene-analyzers-3.0.0.jar?rev=1395298&view=auto
==============================================================================
Binary file - no diff available.

Propchange: ofbiz/trunk/applications/content/template/docbook/extensions/lucene-analyzers-3.0.0.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: ofbiz/trunk/applications/content/template/docbook/extensions/lucene-core-3.0.0.jar
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/template/docbook/extensions/lucene-core-3.0.0.jar?rev=1395298&view=auto
==============================================================================
Binary file - no diff available.

Propchange: ofbiz/trunk/applications/content/template/docbook/extensions/lucene-core-3.0.0.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: ofbiz/trunk/applications/content/template/docbook/extensions/saxon65.jar
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/template/docbook/extensions/saxon65.jar?rev=1395298&view=auto
==============================================================================
Binary file - no diff available.

Propchange: ofbiz/trunk/applications/content/template/docbook/extensions/saxon65.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: ofbiz/trunk/applications/content/template/docbook/extensions/tagsoup-1.2.1.jar
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/template/docbook/extensions/tagsoup-1.2.1.jar?rev=1395298&view=auto
==============================================================================
Binary file - no diff available.

Propchange: ofbiz/trunk/applications/content/template/docbook/extensions/tagsoup-1.2.1.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: ofbiz/trunk/applications/content/template/docbook/extensions/webhelpindexer.jar
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/template/docbook/extensions/webhelpindexer.jar?rev=1395298&view=auto
==============================================================================
Binary file - no diff available.

Propchange: ofbiz/trunk/applications/content/template/docbook/extensions/webhelpindexer.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: ofbiz/trunk/applications/content/template/docbook/extensions/xalan27.jar
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/template/docbook/extensions/xalan27.jar?rev=1395298&view=auto
==============================================================================
Binary file - no diff available.

Propchange: ofbiz/trunk/applications/content/template/docbook/extensions/xalan27.jar
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: ofbiz/trunk/applications/content/template/docbook/extensions/xslt.py
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/template/docbook/extensions/xslt.py?rev=1395298&view=auto
==============================================================================
--- ofbiz/trunk/applications/content/template/docbook/extensions/xslt.py (added)
+++ ofbiz/trunk/applications/content/template/docbook/extensions/xslt.py Sun Oct  7 13:31:52 2012
@@ -0,0 +1,84 @@
+#!/usr/bin/python -u
+# $Id: xslt.py 8353 2009-03-17 16:57:50Z mzjn $
+
+import sys
+import libxml2
+import libxslt
+from docbook import adjustColumnWidths
+
+# Check the arguments
+usage = "Usage: %s xmlfile.xml xslfile.xsl [outputfile] [param1=val [param2=val]...]" % sys.argv[0]
+
+xmlfile = None
+xslfile = None
+outfile = "-"
+params  = {}
+
+try:
+    xmlfile = sys.argv[1]
+    xslfile = sys.argv[2]
+except IndexError:
+    print usage
+    sys.exit(1)
+
+def quote(astring):
+    if astring.find("'") < 0:
+        return "'" + astring + "'"
+    else:
+        return '"' + astring + '"'
+
+try:
+    outfile = sys.argv[3]
+    if outfile.find("=") > 0:
+        name, value = outfile.split("=", 2)
+        params[name] = quote(value)
+        outfile = None
+
+    count = 4
+    while (sys.argv[count]):
+        try:
+            name, value = sys.argv[count].split("=", 2)
+            if params.has_key(name):
+                print "Warning: '%s' re-specified; replacing value" % name
+            params[name] = quote(value)
+        except ValueError:
+            print "Invalid parameter specification: '" + sys.argv[count] + "'"
+            print usage
+            sys.exit(1)
+        count = count+1
+except IndexError:
+    pass
+
+# ======================================================================
+# Memory debug specific
+# libxml2.debugMemory(1)
+
+# Setup environment
+libxml2.lineNumbersDefault(1)
+libxml2.substituteEntitiesDefault(1)
+libxslt.registerExtModuleFunction("adjustColumnWidths",
+                                  "http://nwalsh.com/xslt/ext/xsltproc/python/Table",
+                                  adjustColumnWidths)
+
+# Initialize and run
+styledoc = libxml2.parseFile(xslfile)
+style = libxslt.parseStylesheetDoc(styledoc)
+doc = libxml2.parseFile(xmlfile)
+result = style.applyStylesheet(doc, params)
+
+# Save the result
+if outfile:
+    style.saveResultToFilename(outfile, result, 0)
+else:
+    print result
+
+# Free things up
+style.freeStylesheet()
+doc.freeDoc()
+result.freeDoc()
+
+# Memory debug specific
+#libxslt.cleanup()
+#if libxml2.debugMemory(1) != 0:
+#    print "Memory leak %d bytes" % (libxml2.debugMemory(1))
+#    libxml2.dumpMemory()

Added: ofbiz/trunk/applications/content/template/docbook/html/docbook.css.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/template/docbook/html/docbook.css.xml?rev=1395298&view=auto
==============================================================================
--- ofbiz/trunk/applications/content/template/docbook/html/docbook.css.xml (added)
+++ ofbiz/trunk/applications/content/template/docbook/html/docbook.css.xml Sun Oct  7 13:31:52 2012
@@ -0,0 +1,110 @@
+<?xml version="1.0"?>
+<style>
+
+/********************************/
+/* start of styles in block.xsl */
+
+.formalpara-title {
+  font-weight: bold;
+}
+
+div.blockquote-title {
+  font-weight: bold;
+  margin-top: 1em;
+  margin-bottom: 1em;
+}
+
+span.msgmain-title {
+  font-weight: bold;
+}
+
+span.msgsub-title {
+  font-weight: bold;
+}
+
+span.msgrel-title {
+  font-weight: bold;
+}
+
+div.msglevel, div.msgorig, div.msgaud {
+  margin-top: 1em;
+  margin-bottom: 1em;
+}
+
+span.msglevel-title, span.msgorig-title, span.msgaud-title {
+  font-weight: bold;
+}
+
+div.msgexplan {
+  margin-top: 1em;
+  margin-bottom: 1em;
+}
+
+span.msgexplan-title {
+  font-weight: bold;
+}
+
+/* end of styles in block.xsl */
+/********************************/
+
+/********************************/
+/* start of styles in autotoc.xsl */
+
+
+/* end of styles in autotoc.xsl */
+/********************************/
+
+/********************************/
+/* start of styles in formal.xsl */
+
+div.figure-title {
+  font-weight: bold;
+}
+
+div.example-title {
+  font-weight: bold;
+}
+
+div.equation-title {
+  font-weight: bold;
+}
+
+div.table-title {
+  font-weight: bold;
+}
+
+div.sidebar-title {
+  font-weight: bold;
+}
+
+
+/* end of styles in formal.xsl */
+/********************************/
+
+/********************************/
+/* start of styles in verbatim.xsl */
+
+div.programlisting {
+  white-space: pre;
+  font-family: monospace;
+}
+
+div.screen {
+  white-space: pre;
+  font-family: monospace;
+}
+
+div.synopsis {
+  white-space: pre;
+  font-family: monospace;
+}
+
+/* end of styles in verbatim.xsl */
+/********************************/
+
+/* footnote rule */
+hr.footnote-hr {
+  width: 100;
+}
+
+</style>

Propchange: ofbiz/trunk/applications/content/template/docbook/html/docbook.css.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/applications/content/template/docbook/html/docbook.css.xml
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/applications/content/template/docbook/html/docbook.css.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: ofbiz/trunk/applications/content/template/docbook/images/draft.svg
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/template/docbook/images/draft.svg?rev=1395298&view=auto
==============================================================================
--- ofbiz/trunk/applications/content/template/docbook/images/draft.svg (added)
+++ ofbiz/trunk/applications/content/template/docbook/images/draft.svg Sun Oct  7 13:31:52 2012
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- 
+  Written by Thomas Schraitle <to...@web.de>
+-->
+<svg version="1.1"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   id="draft-svg">
+  <g id="draft"  transform="rotate(-45)translate(-300,200)">
+     <!--<circle r="2mm" cx="100mm" cy="100mm" fill="black"/>-->
+     <text x="100mm" y="100mm" fill="lightgray"
+        font-size="140pt" text-anchor="middle">Draft</text>
+  </g>
+</svg>

Added: ofbiz/trunk/applications/content/template/docbook/install.sh
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/content/template/docbook/install.sh?rev=1395298&view=auto
==============================================================================
--- ofbiz/trunk/applications/content/template/docbook/install.sh (added)
+++ ofbiz/trunk/applications/content/template/docbook/install.sh Sun Oct  7 13:31:52 2012
@@ -0,0 +1,977 @@
+#!/bin/bash
+# $Id$
+# $Source$ #
+
+# install.sh - Set up user environment for a XML/XSLT distribution
+
+# This is as an interactive installer for updating your
+# environment to use an XML/XSLT distribution such as the DocBook
+# XSL Stylesheets. Its main purpose is to configure your
+# environment with XML catalog data and schema "locating rules"
+# data provided in the XML/XSLT distribution.
+#
+# Although this installer was created for the DocBook project, it
+# is a general-purpose tool that can be used with any XML/XSLT
+# distribution that provides XML/SGML catalogs and locating rules.
+#
+# This script is mainly intended to make things easier for you if
+# you want to install a particular XML/XSLT distribution that has
+# not (yet) been packaged for your OS distro (Debian, Fedora,
+# whatever), or to use "snapshot" or development releases 
+#
+# It works by updating your shell startup file (e.g., .bashrc and
+# .cshrc) and .emacs file and by finding or creating a writable
+# CatalogManager.properties file to update.
+#
+# It makes backup copies of any files it touches, and also
+# generates a uninstall.sh script for reverting its changes.
+#
+# In the same directory where it is located, it expects to find
+# the following four files:
+#   - locatingrules.xml
+#   - catalog.xml
+#   - catalog
+#   - .urilist
+# And if it's unable to locate a CatalogManager.properties file in
+# your environment, it expects to find an "example" one in the
+# same directory as itself, which it copies over to your
+# ~/.resolver directory.
+#
+# If the distribution contains any executables, change the value
+# of the thisBinDir to a colon-separated list of the pathnames of
+# the directories that contain those executables.
+
+# mydir is the "canonical" absolute pathname for install.sh
+mydir=$(cd -P $(dirname $0) && pwd -P) || exit 1
+
+thisLocatingRules=$mydir/locatingrules.xml
+thisXmlCatalog=$mydir/catalog.xml
+thisSgmlCatalog=$mydir/catalog
+
+# .urilist file contains a list of pairs of local pathnames and
+# URIs to test for catalog resolution
+thisUriList=$mydir/.urilist
+exampleCatalogManager=$mydir/.CatalogManager.properties.example
+thisCatalogManager=$HOME/.resolver/CatalogManager.properties
+
+# thisBinDir directory is a colon-separated list of the pathnames
+# to all directories that contain executables provided with the
+# distribution (for example, the DocBook XSL Stylesheets
+# distribution contains a "docbook-xsl-update" convenience script
+# for rsync'ing up to the latest docbook-xsl snapshot). The
+# install.sh script adds the value of thisBinDir to your PATH
+# environment variable
+thisBinDir=$mydir/tools/bin
+
+emit_message() {
+  echo "$1" 1>&2
+}
+
+if [ ! "${*#--batch}" = "$*" ]; then
+  batchmode="Yes";
+else
+  batchmode="No";
+  emit_message
+  if [ ! "$1" = "--test" ]; then 
+    emit_message "NOTE: For non-interactive installs/uninstalls, use --batch"
+    if [ ! "$1" = "--uninstall" ]; then
+      emit_message
+    fi
+  fi
+fi
+
+osName="Unidentified"
+if uname -s | grep -qi "cygwin"; then
+  osName="Cygwin"
+fi
+
+classPathSeparator=":"
+if [ "$osName" = "Cygwin" ]; then
+  thisJavaXmlCatalog=$(cygpath -m $thisXmlCatalog)
+  classPathSeparator=";"
+else
+  thisJavaXmlCatalog=$thisXmlCatalog
+fi
+
+main() {
+  removeOldFiles
+  checkRoot
+  updateCatalogManager
+  checkForResolver
+  writeDotFiles
+  updateUserStartupFiles
+  updateUserDotEmacs
+  writeUninstallFile
+  writeTestFile
+  printExitMessage
+}
+
+removeOldFiles() {
+  rm -f $mydir/.profile.incl
+  rm -f $mydir/.cshrc.incl
+  rm -f $mydir/.emacs.el
+}
+
+checkRoot() {
+  if [ $(id -u)  == "0" ]; then
+    cat 1>&2 <<EOF
+
+WARNING: This install script is meant to be run as a non-root
+         user, but you are running it as root.
+
+EOF
+    read -s -n1 -p "Are you sure you want to continue? [No] "
+    emit_message "$REPLY"
+    case $REPLY in
+      [yY])
+      emit_message
+      ;;
+      *) emit_message "OK, exiting without making changes."
+      exit
+      ;;
+    esac
+  fi
+  return 0
+}
+
+updateCatalogManager() {
+
+  #  - finds or creates a writable CatalogManager.properties file
+  #
+  #  - adds the catalog.xml file for this distribution to the
+  #    CatalogManager.properties file found
+
+  if [ -z "$CLASSPATH" ]; then
+    cat 1>&2 <<EOF
+
+NOTE: There is no CLASSPATH variable set in your environment.
+      No attempt was made to find a CatalogManager.properties
+      file.  Using $thisCatalogManager instead
+EOF
+  else
+    # split CLASSPATH in a list of pathnames by replacing all separator
+    # characters with spaces
+    if [ "$osName" = "Cygwin" ]; then
+      pathnames=$(echo $CLASSPATH | tr ";" " ")
+    else
+      pathnames=$(echo $CLASSPATH | tr ":" " ")
+    fi
+    for path in $pathnames; do
+    if [ "$osName" = "Cygwin" ]; then
+      path=$(cygpath -u $path)
+    fi
+      # strip out trailing slash from pathname
+      path=$(echo $path | sed 's/\/$//')
+      # find CatalogManager.properties file
+      if [ -f $path/CatalogManager.properties ];
+      then
+        existingCatalogManager=$path/CatalogManager.properties
+        break
+      fi
+    done
+  fi
+  # end of CLASSPATH check
+
+  if [ -w "$existingCatalogManager" ]; then
+    # existing CatalogManager.properties was found and it is
+    # writable, so use it
+    myCatalogManager=$existingCatalogManager
+  else
+    if [ -f "$existingCatalogManager" ]; then
+      # a non-writable CatalogManager.properties exists, so emit a
+      # note saying that it won't be used
+      cat 1>&2 <<EOF
+NOTE: $existingCatalogManager file found,
+      but you don't have permission to write to it.
+      Will instead use:
+      $thisCatalogManager
+EOF
+    else
+      # CLASSPATH is set, but no CatalogManager.properties found
+      if [ -n "$CLASSPATH" ]; then
+        cat 1>&2 <<EOF
+NOTE: No CatalogManager.properties found from CLASSPATH.
+      Will instead use:
+      $thisCatalogManager
+EOF
+      fi
+    fi
+    if [ "$batchmode" = "Yes" ]; then
+      emit_message
+    fi
+    # end of check for existing writable CatalogManager.properties
+
+    if [ -f $thisCatalogManager ]; then
+      myCatalogManager=$thisCatalogManager
+    else
+      REPLY=""
+      if [ ! "$batchmode" = "Yes" ]; then
+        emit_message
+        read -s -n1 -p "Create $thisCatalogManager file? [Yes] "
+        emit_message "$REPLY"
+        emit_message
+      fi
+      case $REPLY in
+        [nNqQ])
+        emitNoChangeMsg
+        ;;
+        *)
+        if [ ! -d "${thisCatalogManager%/*}" ]; then
+          mkdir -p ${thisCatalogManager%/*}
+        fi
+        cp $mydir/.CatalogManager.properties.example $thisCatalogManager || exit 1
+        emit_message "NOTE: Created the following file:"
+        emit_message "      $thisCatalogManager"
+        myCatalogManager=$thisCatalogManager
+        ;;
+      esac
+      # end of creating "private" CatalogManager.properties
+    fi
+    # end of check for "private" CatalogManager.properties
+  fi
+  # end of check finding/creating writable CatalogManager.properties
+
+  if [ -n "$myCatalogManager" ]; then
+    etcXmlCatalog=
+    catalogsLine=$(grep "^catalogs=" $myCatalogManager)
+    if [ -f /etc/xml/catalog ] && [ "$osName" != "Cygwin" ] \
+      && [ "${catalogsLine#*/etc/xml/catalog*}" = "$catalogsLine" ]; then
+      cat 1>&2 <<EOF
+
+WARNING: /etc/xml/catalog exists but was not found in:
+         $myCatalogManager
+         If /etc/xml/catalog file has content, you probably
+         should reference it in:
+         $myCatalogManager
+         This installer can automatically add it for you,
+         but BE WARNED that once it has been added, the
+         uninstaller for this distribution CANNOT REMOVE IT
+         automatically during uninstall. If you no longer want
+         it included, you will need to remove it manually.
+
+EOF
+      REPLY=""
+      if [ ! "$batchmode" = "Yes" ]; then
+        read -s -n1 -p "Add /etc/xml/catalog to $myCatalogManager? [Yes] "
+        emit_message "$REPLY"
+      fi
+      case $REPLY in
+        [nNqQ])
+        emit_message
+        ;;
+        *)
+        etcXmlCatalog=/etc/xml/catalog
+        ;;
+      esac
+    fi
+
+    catalogBackup="$myCatalogManager.$$.bak"
+    if [ ! -w "${myCatalogManager%/*}" ]; then
+      emit_message
+      emit_message "WARNING: ${myCatalogManager%/*} directory is not writable."
+      emit_message
+      emitNoChangeMsg
+    else
+      REPLY=""
+      if [ ! "$batchmode" = "Yes" ]; then
+        emit_message
+        emit_message "Add $thisJavaXmlCatalog"
+        read -s -n1 -p "to $myCatalogManager file? [Yes] "
+        emit_message "$REPLY"
+        emit_message
+      fi
+      case $REPLY in
+        [nNqQ])
+        emitNoChangeMsg
+        ;;
+        *)
+        if [ "$catalogsLine" ] ; then
+          if [ "${catalogsLine#*$thisJavaXmlCatalog*}" != "$catalogsLine" ]; then
+            emit_message "NOTE: $thisJavaXmlCatalog"
+            emit_message "      already in:"
+            emit_message "      $myCatalogManager"
+          else
+            mv $myCatalogManager $catalogBackup || exit 1
+            sed "s#^catalogs=\(.*\)\$#catalogs=$thisJavaXmlCatalog;\1;$etcXmlCatalog#" $catalogBackup \
+            | sed 's/;\+/;/' | sed 's/;$//' > $myCatalogManager || exit 1
+            emit_message "NOTE: Successfully updated the following file:"
+            emit_message "      $myCatalogManager"
+            emit_message "      Backup written to:"
+            emit_message "      $catalogBackup"
+          fi
+        else
+          mv $myCatalogManager $catalogBackup || exit 1
+          cp $catalogBackup $myCatalogManager
+          echo "catalogs=$thisJavaXmlCatalog;$etcXmlCatalog" \
+          | sed 's/;\+/;/' | sed 's/;$//' >> $myCatalogManager || exit 1
+          emit_message "NOTE: \"catalogs=\" line added to $myCatalogManager."
+          emit_message "      Backup written to $catalogBackup"
+        fi
+        ;;
+      esac
+      # end of backing up and updating CatalogManager.properties
+    fi
+  fi
+  # end of CatalogManager.properties updates
+
+  if [ "$osName" = "Cygwin" ]; then
+    myCatalogManager=$(cygpath -m $myCatalogManager)
+  fi
+  return 0
+}
+
+writeDotFiles() {
+  while read; do
+    echo "$REPLY" >> $mydir/.profile.incl
+  done <<EOF
+# $thisBinDir is not in PATH, so add it
+if [ "\${PATH#*$thisBinDir*}" = "\$PATH" ]; then
+  PATH="$thisBinDir:\$PATH"
+  export PATH
+fi
+if [ -z "\$XML_CATALOG_FILES" ]; then
+  XML_CATALOG_FILES="$thisXmlCatalog"
+else
+  # $thisXmlCatalog is not in XML_CATALOG_FILES, so add it
+  if [ "\${XML_CATALOG_FILES#*$thisXmlCatalog*}" = "\$XML_CATALOG_FILES" ]; then
+    XML_CATALOG_FILES="$thisXmlCatalog \$XML_CATALOG_FILES"
+  fi
+fi
+# /etc/xml/catalog exists but is not in XML_CATALOG_FILES, so add it
+if [ -f /etc/xml/catalog ] && \
+  [ "\${XML_CATALOG_FILES#*/etc/xml/catalog*}" = "\$XML_CATALOG_FILES" ]; then
+  XML_CATALOG_FILES="\$XML_CATALOG_FILES /etc/xml/catalog"
+fi
+export XML_CATALOG_FILES
+
+if [ -z "\$SGML_CATALOG_FILES" ]; then
+  SGML_CATALOG_FILES="$thisSgmlCatalog"
+else
+  # $thisSgmlCatalog is not in SGML_CATALOG_FILES, so add it
+  if [ "\${SGML_CATALOG_FILES#*$thisSgmlCatalog}" = "\$SGML_CATALOG_FILES" ]; then
+    SGML_CATALOG_FILES="$thisSgmlCatalog:\$SGML_CATALOG_FILES"
+  fi
+fi
+# /etc/sgml/catalog exists but is not in SGML_CATALOG_FILES, so add it
+if [ -f /etc/sgml/catalog ] && \
+  [ "\${SGML_CATALOG_FILES#*/etc/sgml/catalog*}" = "\$SGML_CATALOG_FILES" ]; then
+  SGML_CATALOG_FILES="\$SGML_CATALOG_FILES:/etc/sgml/catalog"
+fi
+export SGML_CATALOG_FILES
+EOF
+
+while read; do
+  echo "$REPLY" >> $mydir/.cshrc.incl
+done <<EOF
+# $thisBinDir is not in PATH, so add it
+if ( "\\\`echo \$PATH | grep -v $thisBinDir\\\`" != "" ) then
+  setenv PATH "$thisBinDir:\$PATH"
+endif
+if ( ! $\?XML_CATALOG_FILES ) then
+  setenv XML_CATALOG_FILES "$thisXmlCatalog"
+# $thisXmlCatalog is not in XML_CATALOG_FILES, so add it
+else if ( "\\\`echo \$XML_CATALOG_FILES | grep -v $thisXmlCatalog\\\`" != "" ) then
+  setenv XML_CATALOG_FILES "$thisXmlCatalog \$XML_CATALOG_FILES"
+endif
+endif
+# /etc/xml/catalog exists but is not in XML_CATALOG_FILES, so add it
+if ( -f /etc/xml/catalog && "\\\`echo \$XML_CATALOG_FILES | grep -v /etc/xml/catalog\\\`" != "" ) then
+  setenv XML_CATALOG_FILES "\$XML_CATALOG_FILES /etc/xml/catalog"
+endif
+
+endif
+if ( ! $\?SGML_CATALOG_FILES ) then
+  setenv SGML_CATALOG_FILES "$thisSgmlCatalog"
+else if ( "\\\`echo \$SGML_CATALOG_FILES | grep -v $thisSgmlCatalog\\\`" != "" ) then
+  setenv SGML_CATALOG_FILES "$thisSgmlCatalog:\$SGML_CATALOG_FILES"
+endif
+endif
+# /etc/SGML/catalog exists but is not in SGML_CATALOG_FILES, so add it
+if ( -f /etc/sgml/catalog && "\\\`echo \$SGML_CATALOG_FILES | grep -v /etc/sgml/catalog\\\`" != "" ) then
+  setenv SGML_CATALOG_FILES {\$SGML_CATALOG_FILES}:/etc/sgml/catalog
+endif
+EOF
+
+if [ -n "$myCatalogManager" ]; then
+  myCatalogManagerDir=${myCatalogManager%/*}
+  while read; do
+    echo "$REPLY" >> $mydir/.profile.incl
+  done <<EOF
+
+
+if [ -z "\$CLASSPATH" ]; then
+  CLASSPATH="$myCatalogManagerDir"
+else
+  # $myCatalogManagerDir is not in CLASSPATH, so add it
+  if [ "\${CLASSPATH#*$myCatalogManagerDir*}" = "\$CLASSPATH" ]; then
+    CLASSPATH="$myCatalogManagerDir$classPathSeparator\$CLASSPATH"
+  fi
+fi
+export CLASSPATH
+EOF
+
+  while read; do
+    echo "$REPLY" >> $mydir/.cshrc.incl
+  done <<EOF
+
+
+if ( ! $\?CLASSPATH ) then
+  setenv CLASSPATH "$myCatalogManagerDir"
+# $myCatalogManagerDir is not in CLASSPATH, so add it
+else if ( "\\\`echo \$CLASSPATH | grep -v $myCatalogManagerDir\\\`" != "" ) then
+  setenv CLASSPATH "$myCatalogManagerDir$classPathSeparator\$CLASSPATH"
+endif
+endif
+EOF
+
+fi
+
+while read; do
+  echo "$REPLY" >> $mydir/.emacs.el
+done <<EOF
+(add-hook
+  'nxml-mode-hook
+  (lambda ()
+    (setq rng-schema-locating-files-default
+          (append '("$thisLocatingRules")
+                  rng-schema-locating-files-default ))))
+EOF
+
+return 0
+}
+
+updateUserStartupFiles() {
+  if [ ! "$batchmode" = "Yes" ]; then
+  cat 1>&2 <<EOF
+
+NOTE: To source your environment correctly for using the catalog
+      files in this distribution, you need to update one or more
+      of your shell startup files. This installer can
+      automatically make the necessary changes. Or, if you prefer,
+      you can make the changes manually.
+
+EOF
+  else
+    emit_message
+  fi
+
+  # if running csh or tcsh, target .cshrc and .tcshrc files for
+  # update; otherwise, target .bash_* and .profiles
+
+  parent=$(ps -p $PPID | grep "/")
+  if [ "${parent#*csh}" != "$parent" ] || [ "${parent#*tcsh}" != "$parent" ]; then
+    myStartupFiles=".cshrc .tcshrc"
+    appendLine="source $mydir/.cshrc.incl"
+  else
+    myStartupFiles=".bash_profile .bash_login .profile .bashrc"
+    appendLine=". $mydir/.profile.incl"
+  fi
+
+  for file in $myStartupFiles; do
+    if [ -f "$HOME/$file" ]; then
+      dotFileBackup=$HOME/$file.$$.bak
+      REPLY=""
+      if [ ! "$batchmode" = "Yes" ]; then
+        read -s -n1 -p "Update $HOME/$file? [Yes] "
+        emit_message "$REPLY"
+      fi
+      case $REPLY in
+        [nNqQ])
+        cat 1>&2 <<EOF
+
+NOTE: No change made to $HOME/$file. You either need
+      to add the following line to it, or manually source
+      the shell environment for this distribution each
+      time you want use it.
+
+$appendLine
+
+EOF
+        ;;
+        *)
+        lineExists="$(grep "$appendLine" $HOME/$file )"
+        if [ ! "$lineExists" ]; then
+          mv $HOME/$file $dotFileBackup     || exit 1
+          cp $dotFileBackup $HOME/$file     || exit 1
+          echo "$appendLine" >> $HOME/$file || exit 1
+          cat 1>&2 <<EOF
+NOTE: Successfully updated the following file:
+      $HOME/$file 
+      Backup written to:
+      $dotFileBackup
+
+EOF
+        else
+          cat 1>&2 <<EOF
+NOTE: The following file already contains information for this
+      distribution, so I did not update it.
+      $HOME/$file
+
+EOF
+        fi
+        ;;
+      esac
+    fi
+  done
+  if [ -z "$dotFileBackup" ]; then
+    if [ ! "$batchmode" = "Yes" ]; then
+      emit_message
+    fi
+    cat 1>&2 <<EOF
+NOTE: No shell startup files updated. You can source the
+      environment for this distribution manually, each time you
+      want to use it, by typing the following.
+
+$appendLine
+
+EOF
+  fi
+}
+
+updateUserDotEmacs() {
+  if [ -f $thisLocatingRules ]; then
+  cat 1>&2 <<EOF
+
+NOTE: This distribution includes a "schema locating rules" file
+      for Emacs/nXML.  To use it, you should update either your
+      .emacs or .emacs.el file.  This installer can automatically
+      make the necessary changes. Or, if you prefer, you can make
+      the changes manually.
+
+EOF
+
+  emacsAppendLine="(load-file \"$mydir/.emacs.el\")"
+  myEmacsFile=
+  for file in .emacs .emacs.el; do
+    if [ -f "$HOME/$file" ]; then
+      myEmacsFile=$HOME/$file
+      break
+    fi
+  done
+  if [ ! -f "$myEmacsFile" ]; then
+    REPLY=""
+    if [ ! "$batchmode" = "Yes" ]; then
+      read -s -n1 -p "No .emacs or .emacs.el file. Create one? [No] "
+      emit_message "$REPLY"
+      emit_message
+    fi
+    case $REPLY in
+      [yY])
+      myEmacsFile=$HOME/.emacs
+      touch $myEmacsFile
+      ;;
+      *)
+      cat 1>&2 <<EOF
+NOTE: No Emacs changes made. To use this distribution with,
+      Emacs/nXML, you can create a .emacs file and manually add
+      the following line to it, or you can run it as a command
+      within Emacs.
+
+$emacsAppendLine
+
+EOF
+      ;;
+    esac
+  fi
+  if [ -n "$myEmacsFile" ]; then
+    REPLY=""
+    if [ ! "$batchmode" = "Yes" ]; then
+      read -s -n1 -p  "Update $myEmacsFile? [Yes] "
+      emit_message "$REPLY"
+      emit_message
+    fi
+    case $REPLY in
+      [nNqQ])
+      cat 1>&2 <<EOF
+
+NOTE: No change made to $myEmacsFile. To use this distribution
+      with Emacs/nXML, you can manually add the following line
+      to your $myEmacsFile, or you can run it as a command
+      within Emacs.
+
+$emacsAppendLine
+
+EOF
+      ;;
+      *)
+      lineExists="$(grep "$emacsAppendLine" $myEmacsFile)"
+      if [ ! "$lineExists" ]; then
+        dotEmacsBackup=$myEmacsFile.$$.bak
+        mv $myEmacsFile $dotEmacsBackup    || exit 1
+        cp $dotEmacsBackup $myEmacsFile    || exit 1
+        echo "$emacsAppendLine" >> $myEmacsFile || exit 1
+        cat 1>&2 <<EOF
+NOTE: Successfully updated the following file:
+      $myEmacsFile
+      Backup written to:
+      $dotEmacsBackup
+EOF
+      else
+        cat 1>&2 <<EOF
+
+NOTE: The following file already contains information for this
+      distribution, so I did not update it.
+      $myEmacsFile
+
+EOF
+      fi
+      ;;
+    esac
+  fi
+fi
+}
+
+uninstall() {
+  if [ ! "$batchmode" = "Yes" ]; then
+  cat 1>&2 <<EOF
+
+NOTE: To "uninstall" this distribution, the changes made to your
+      CatalogManagers.properties, startup files, and/or .emacs
+      file need to be reverted. This uninstaller can automatically
+      revert them.  Or, if you prefer, you can revert them manually.
+
+EOF
+  fi
+
+  if [ "$osName" = "Cygwin" ]; then
+    thisXmlCatalog=$thisJavaXmlCatalog
+  fi
+
+  # make "escaped" version of PWD to use with sed and grep
+  escapedPwd=$(echo $mydir | sed "s#/#\\\\\/#g")
+
+  # check to see if a non-empty value for catalogManager was fed
+  # to uninstaller.
+  if [ -n ${1#--catalogManager=} ]; then
+    myCatalogManager=${1#--catalogManager=}
+    catalogBackup="$myCatalogManager.$$.bak"
+    catalogsLine=$(grep "^catalogs=" $myCatalogManager)
+    if [ "$catalogsLine" ] ; then
+      if [ "${catalogsLine#*$thisXmlCatalog*}" != "$catalogsLine" ]; then
+        REPLY=""
+        if [ ! "$batchmode" = "Yes" ]; then
+          read -s -n1 -p "Revert $myCatalogManager? [Yes] "
+          emit_message "$REPLY"
+        fi
+        case $REPLY in
+          [nNqQ]*)
+          cat 1>&2 <<EOF
+
+NOTE: No change made to $myCatalogManager. You need to manually
+      remove the following path from the "catalog=" line.
+
+          $thisXmlCatalog
+
+EOF
+          ;;
+          *)
+          mv $myCatalogManager $catalogBackup || exit 1
+          sed "s#^catalogs=\(.*\)$thisXmlCatalog\(.*\)\$#catalogs=\1\2#" $catalogBackup \
+          | sed 's/;\+/;/' | sed 's/;$//' | sed 's/=;/=/' > $myCatalogManager || exit 1
+          cat 1>&2 <<EOF
+NOTE: Successfully updated the following file:
+      $myCatalogManager
+      Backup written to:
+      $catalogBackup
+
+EOF
+          ;;
+        esac
+      else
+        emit_message "NOTE: No data for this distribution found in:"
+        emit_message "       $myCatalogManager"
+        emit_message
+      fi
+    else
+      cat 1>&2 <<EOF
+NOTE: No data for this distribution was found in the following
+      file, so I did not revert it.
+      $myCatalogManager
+EOF
+    fi
+  fi
+
+  if [ -n "$myEmacsFile" ]; then 
+    # check to see if a non-empty value for --dotEmacs file was fed
+    # to uninstaller.
+    if [ -n ${2#--dotEmacs=} ]; then
+      myEmacsFile=${2#--dotEmacs=}
+      revertLine="(load-file \"$escapedPwd\/\.emacs\.el\")"
+      loadLine="$(grep "$revertLine" "$myEmacsFile")"
+      if [ -n "$loadLine" ]; then
+        emit_message
+        REPLY=""
+        if [ ! "$batchmode" = "Yes" ]; then
+          read -s -n1 -p "Revert $myEmacsFile? [Yes] "
+          emit_message "$REPLY"
+        fi
+        case $REPLY in
+          [nNqQ]*)
+          cat 1>&2 <<EOF
+
+NOTE: No change made to $myEmacsFile. You need to manually
+remove the following line.
+
+(load-file \"$mydir/.emacs.el\")
+
+EOF
+          ;;
+          *)
+          dotEmacsBackup=$myEmacsFile.$$.bak
+          sed -e "/$revertLine/d" -i".$$.bak" $myEmacsFile  || exit 1
+          cat 1>&2 <<EOF
+NOTE: successfully reverted the following file:
+      $myEmacsFile
+      Backup written to:
+      $dotEmacsBackup
+
+EOF
+          ;;
+        esac
+      else
+        emit_message "NOTE: No data for this distribution found in:"
+        emit_message "      $myEmacsFile"
+      fi
+    fi
+  fi
+
+  # check all startup files
+  myStartupFiles=".bash_profile .bash_login .profile .bashrc .cshrc .tcshrc"
+  for file in $myStartupFiles; do
+    if [ -e "$HOME/$file" ]; then
+      case $file in
+        .tcshrc|.cshrc)
+        revertLine="source $mydir/.cshrc.incl"
+        revertLineEsc="source $escapedPwd\/\.cshrc\.incl"
+        ;;
+        *)
+        revertLine=". $mydir/.profile.incl"
+        revertLineEsc="\. $escapedPwd\/\.profile\.incl"
+        ;;
+      esac
+      lineExists="$(grep "$revertLineEsc" $HOME/$file )"
+      if [ "$lineExists" ]; then
+        REPLY=""
+        if [ ! "$batchmode" = "Yes" ]; then
+          read -s -n1 -p "Update $HOME/$file? [Yes] "
+          emit_message "$REPLY"
+        fi
+        case $REPLY in
+          [nNqQ]*)
+          cat 1>&2 <<EOF
+
+NOTE: No change made to $HOME/$file. You need to manually remove
+      the following line from it.
+
+ $revertLine
+
+EOF
+          ;;
+          *)
+          dotFileBackup=$HOME/$file.$$.bak
+          sed -e "/$revertLineEsc/d" -i".$$.bak" $HOME/$file  || exit 1
+          cat 1>&2 <<EOF
+NOTE: Successfully updated the following file:
+      $HOME/$file
+      Backup written to:
+      $dotFileBackup
+
+EOF
+          ;;
+        esac
+      else
+        emit_message "NOTE: No data for this distribution found in:"
+        emit_message "      $HOME/$file"
+        emit_message
+      fi
+    fi
+  done
+  removeOldFiles
+  emit_message "Done. Deleted uninstall.sh file."
+  rm -f $mydir/test.sh      || exit 1
+  rm -f $mydir/uninstall.sh || exit 1
+}
+
+writeUninstallFile() {
+  uninstallFile=$mydir/uninstall.sh
+  echo '#!/bin/bash'                               > $uninstallFile || exit 1
+  echo 'mydir=$(cd -P $(dirname $0) && pwd -P)'   >> $uninstallFile || exit 1
+  echo "\$mydir/install.sh \\"                    >> $uninstallFile || exit 1
+  echo "  --uninstall \\"                         >> $uninstallFile || exit 1
+  echo "  --catalogManager=$myCatalogManager \\"  >> $uninstallFile || exit 1
+  echo "  --dotEmacs='$myEmacsFile' \\"           >> $uninstallFile || exit 1
+  echo '  $@'                                     >> $uninstallFile || exit 1
+  chmod 755 $uninstallFile || exit 1
+}
+
+writeTestFile() {
+  testFile=$mydir/test.sh
+  echo "#!/bin/bash"                                > $testFile || exit 1
+  echo 'mydir=$(cd -P $(dirname $0) && pwd -P)'    >> $testFile || exit 1
+  echo '$mydir/install.sh --test'                  >> $testFile || exit 1
+  chmod 755 $testFile || exit 1
+}
+
+printExitMessage() {
+  cat 1>&2 <<EOF
+To source your shell environment for this distribution, type the
+following:
+
+$appendLine
+
+EOF
+}
+
+checkForResolver() {
+  resolverResponse="$(java org.apache.xml.resolver.apps.resolver uri -u foo 2>/dev/null)"
+  if [ -z "$resolverResponse" ]; then
+    cat 1>&2 <<EOF
+
+NOTE: Your environment does not seem to contain the Apache XML
+      Commons Resolver; without that, you can't use XML catalogs
+      with Java applications. For more information, see the "How
+      to use a catalog file" section in Bob Stayton's "DocBook
+      XSL: The Complete Guide"
+
+      http://sagehill.net/docbookxsl/UseCatalog.html
+
+EOF
+  fi
+}
+
+emitNoChangeMsg() {
+  cat 1>&2 <<EOF
+
+NOTE: No changes were made to CatalogManagers.properties. To
+      provide your Java tools with XML catalog information for
+      this distribution, you will need to make the appropriate
+      changes manually.
+
+EOF
+}
+
+testCatalogs() {
+  if [ ! -f "$thisXmlCatalog" ]; then
+    cat 1>&2 <<EOF
+
+FATAL: $thisXmlCatalog file needed but not found. Stopping.
+EOF
+  exit
+  fi
+
+  if [ -z "$XML_CATALOG_FILES" ]; then
+    emit_message
+    emit_message "WARNING: XML_CATALOG_FILES not set. Not testing with xmlcatalog."
+  else
+    xmlCatalogResponse="$(xmlcatalog 2>/dev/null)"
+    if [ -z "$xmlCatalogResponse" ]; then
+    cat 1>&2 <<EOF
+
+WARNING: Cannot locate the "xmlcatalog" command. Make sure that
+         you have libxml2 and its associated utilities installed.
+
+         http://xmlsoft.org/
+
+EOF
+    else
+      emit_message "Testing with xmlcatalog..."
+      # read in pathname-uri pairs from .urilist file
+      while read pair; do
+        if [ ! "${pair%* *}" = "." ]; then
+          path=$mydir/${pair%* *}
+        else
+          path=$mydir/
+        fi
+        uri=${pair#* *}
+        emit_message
+        emit_message "  Tested: $uri"
+        for catalog in $XML_CATALOG_FILES; do
+          response="$(xmlcatalog $catalog $uri| grep -v "No entry")"
+          if [ -n "$response" ]; then
+            if [ "$response" = "$path" ]; then
+              emit_message "  Result: $path"
+              break
+            else
+              emit_message "  Result: FAILED"
+            fi
+          fi
+        done
+      done < $mydir/.urilist
+    fi
+  fi
+
+  if [ -z "$CLASSPATH" ]; then
+    emit_message
+    emit_message "NOTE: CLASSPATH not set. Not testing with Apache XML Commons Resolver."
+  else
+    if [ "$(checkForResolver)" ]; then
+      checkForResolver
+    else
+      emit_message
+      emit_message "Testing with Apache XML Commons Resolver..."
+      # read in pathname-uri pairs from .urilist file
+      while read pair; do
+        if [ ! "${pair%* *}" = "." ]; then
+          path=$mydir/${pair%* *}
+        else
+          path=$mydir/
+        fi
+        uri=${pair#* *}
+        emit_message
+        emit_message "  Tested: $uri"
+        if [ ${uri%.dtd} != $uri ]; then
+          response="$(java org.apache.xml.resolver.apps.resolver system -s $uri | grep "Result")"
+        else
+          response="$(java org.apache.xml.resolver.apps.resolver uri -u $uri | grep "Result")"
+        fi
+        if [ "$response" ]; then
+          if [ "${response#*$path}" != "$response" ]; then
+            emit_message "  Result: $path"
+          else
+            emit_message "  Result: FAILED"
+          fi
+          echo
+        fi
+      done < $mydir/.urilist
+    fi
+  fi
+}
+
+# get opts and execute appropriate function
+case $1 in
+  *-uninstall)
+  uninstall $2 $3 $4
+  ;;
+  *-test)
+  testCatalogs
+  ;;
+  *)
+  main
+  ;;
+esac
+
+# Copyright
+# ---------
+# Copyright 2005-2007 Michael(tm) Smith <sm...@sideshowbarker.net>
+# 
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation
+# files (the "Software"), to deal in the Software without
+# restriction, including without limitation the rights to use, copy,
+# modify, merge, publish, distribute, sublicense, and/or sell copies
+# of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+# 
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+# DEALINGS IN THE SOFTWARE.
+
+# vim: number

Propchange: ofbiz/trunk/applications/content/template/docbook/install.sh
------------------------------------------------------------------------------
    svn:eol-style = LF

Propchange: ofbiz/trunk/applications/content/template/docbook/install.sh
------------------------------------------------------------------------------
    svn:executable = *

Propchange: ofbiz/trunk/applications/content/template/docbook/install.sh
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id